Laravel :: all-> where返回所有内容

时间:2019-12-10 17:33:55

标签: laravel where-clause

我正在尝试仅获取已批准列的行填充值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表中的每一行。我究竟做错了什么?预先感谢!

3 个答案:

答案 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();