我正在尝试仅获取已批准列的行填充值1
$reviews = Review::all()->where('approved', '1');
return view('items.show', compact('reviews')
我也尝试过
$reviews = Review::where('approved', '1');
return view('items.show', compact('reviews')
然后我用
@foreach ($item->reviews->sortByDesc('created_at') as $review)
但是,不管批准的值是多少,这都会从数据库返回Review表中的每一行。我究竟做错了什么?预先感谢!
答案 0 :(得分:2)
您必须使用
$reviews = Review::where('approved', '1')->latest()->get();
return view('items.show', compact('reviews');
在刀片中
@foreach ($reviews as $review)
答案 1 :(得分:1)
第一件事是,当您可以要求数据库只给您要过滤的记录时,没有理由从数据库中获取所有记录,然后对其进行过滤。
$reviews = Review::where('approved', 1)->orderBy('created_at', 'desc')->get();
第二,如注释中所述,您应该迭代$reviews
:
@foreach ($reviews as $review)
答案 2 :(得分:1)
在第一个示例中,您将在执行查询后添加一个where条件。在第二秒中,您根本不执行查询。
代替$reviews = Review::where('approved', '1')->get();