所以我对laravel和php很陌生,所以我有几个问题。
现在我有一个后置模型,有很多喜欢。
目前,我正在尝试使用@foreach($posts as $post)
从控制器检索帖子(这部分已经工作,检索帖子内容的代码不相关)来显示视图上的所有帖子,我希望以简洁的方式显示帖子所具有的所有好恶。
目前,like->like==1是like,like->like==0是like。
因此,如果一个帖子有5个不喜欢的地方,它会显示:
鲍勃·简和其他四个人不喜欢这样
或者如果它有两个不喜欢:
无名氏和约翰教不喜欢这个
<div class = "dislikes">
@if(count($post->likes->where('like',0))==0)
@elseif(count($post->likes->where('like',0))==1)
{{ $post->likes->where('like', 0)->first()->user->first_name }} {{ $post->likes->where('like', 0)->first()->user->last_name }} Disikes this
@elseif(count($post->likes->where('like',0))==2)
{{($post->likes->where('like', 0))->first()->user->first_name}} {{($post->likes->where('like', 0))->first()->user->last_name}} and {{($post->likes->where('like', 0))->last()->user->first_name}} {{($post->likes->where('like', 0))->last()->user->last_name}} Dislike This
@elseif(count($post->likes->where('like', 0))>=4)
{{($post->likes->where('like', 0))->first()->user->first_name}} {{($post->likes->where('like', 0))->first()->user->last_name}} and {{count($post->likes->where('like', 0)) - 1}} Others Like This
@else
@for($i=0;$i<count($post->likes->where('like',0));$i++)
@if($i+1 == count($post->likes->where('like',0)))
and {{$post->likes->where('like',0))->get()[$i]->user->first_name}} {{$post->likes->where('like',0)->get()[$i]->user->last_name}} Like This
@else
{{$post->likes->where('like',0)->get()[$i]->user->first_name}} {{$post->likes->where('like',0)->get()[$i]->user->last_name}} ,
@endif
@endfor
@endif
</div>
我用密码玩了几个小时,但是
($post->likes->where('like',0))[$i]->user->first_name
在我的for循环中不起作用,($post->likes->where('like',0))[$i]->user->first_name
也不起作用(我在括号中放了一点来尝试修复这个问题)。我不知所措。任何关于我能更好地解决这个问题的建议都将非常感谢。
谢谢您。
最佳答案
我不知道你的型号和桌子的结构。但是假设您有一个名为post的表和模型,like和dislike。您应该在post模型中建立关系,例如:
public function like()
{
return $this->hasMany(Like::class);
}
public function dislike()
{
return $this->hasMany(Dislike::class);
}
然后可以在控制器中检索数据,例如
$posts = Post::with('like', 'dislike')->get();
return view('view', compact('posts'));
现在您可以在视图中循环,例如
@foreach($posts as $post)
@if($post->like != null)
<div class = "like">
@foreach($post->like)
// render the view here...
@endforeach
</div>
@endif
@if($post->dislike != null)
<div class = "dislikes">
@foreach($post->dislike)
// render the view here...
@endforeach
</div>
@endif
@endforeach
关于php - 使用Laravel渲染带有帖子的 View ,并从帖子中检索喜欢的对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40209486/