[英]How do I echo this?
當我回應這個時:
<?php echo $photo->votesCount ?>
我得到
[{"photo_id":1,"votes":2}]
如何顯示投票數 (2)?
這是對象的 vardump: http ://pastebin.com/ddAkRk4c
如果我輸入:
<?php print_r( $photo->votesCount )?>
我明白了: http : //pastebin.com/ZfE76WmB
完整視圖:
2 @foreach($photos as $photo)
3 <li class='photo'>
4 <img src="{{URL::to('/')}}/uploads/{{$photo->name}}" width="150">
5 <div>
6 <a href="{{route('photos.show',$photo->id)}}">{{ $photo->name }}</a>
7 <?php $photo_array = json_decode($photo);
8 echo $photo_array->votes; ?>
9 </div>
10 </li>
11 @endforeach
部分控制器邏輯:
$photos = Photo::where('period_id', $currentPeriod)
->with('votesCount')
->get();
return view('home', ['uploaded' => $uploaded, 'photos' => $photos, 'period' => $currentPeriod]);
模型:
public function votes()
{
return $this->hasMany('App\Vote');
}
public function votesCount()
{
return $this->votes()
->selectRaw('photo_id, count(*) as votes')
->groupBy('photo_id');
}
不需要你的第二種方法votesCount
。 您已經為投票定義了一個hasMany
關系,如果您查詢它們,您只會獲得照片 ID 的投票。
要獲得票數,請在您看來執行以下操作:
$photo->votes->count();
你的控制器應該是這樣的:
$photos = Photo::where('period_id', $currentPeriod)
->with('votes')
->get();
像這樣回聲
<?php echo $photos->votesCount->votes ?>
<?php echo $photos->votesCount->votes ?>
但你也可以寫
{{ echo $photos->votesCount->votes; }}
嘗試這個:
由於它是一個 JSON 數組 json_decode 數組並回顯值
$photo_array = json_decode($photos->votesCount);
echo $photo_array['votes'];
希望這是有幫助的。
您的$photos->votesCount
返回一個字符串,您必須將其轉換為一個數組,如下所示:
$str = $photos->votesCount //gets the string
$arr = json_decode($str, true)[0]; //convert it to an array
echo $arr['votes'];
或作為對象
$str = $photos->votesCount //gets the string
$obj = json_decode($str)[0]; //convert it to an object
echo $obj->votes;
我像這樣成功地進行了測試,並得到了 echo 2:
$str = '[{"photo_id":1,"votes":2}]';
$arr = json_decode($str, true); //convert it to an array
echo $arr[0]["votes"];
所以它應該像這樣為你工作
$str = '$photo->votesCount';
$arr = json_decode($str, true); //convert it to an array
echo $arr[0]["votes"];
如果這不起作用,請嘗試將第一行更改為
$str = (string)$photo->votesCount;
由於它是一個 JSON 數組,因此 json_decode 數組並回顯值:
$photo_array = json_decode($photos->votesCount, true);
echo $photo_array[0]['votes'];
不要忘記在json_decode
添加第二個屬性true
- 請參閱手冊。
所以整個代碼:
<?php
foreach ($photos as $photo) {
echo "<li class='photo'>";
echo "<img src='{{URL::to(\'/\')}}/uploads/{{$photo->name}}' width='150'>";
echo "<div>";
echo "<a href='{{route(\'photos.show\', $photo->id)}}'>{{ $photo->name }}</a>";
$photo_array = json_decode($photo, true);
echo $photo_array[0]['votes'];
echo "</div>";
echo "</li>";
}
?>
votesCount 是一個數組。 所以就這樣回聲
<?php echo $photos->votesCount['votes'] ?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.