首先,这不是Laravel 4: how to "order by" using Eloquent ORM的重复
我有这个模型用户,那么我有另一个模型Idea。我正在写一个包含用户详细信息的视图,并且我想发布用户提出的所有想法。现在,该提案具有一个状态,第一个状态是“ DRAFT”,这意味着只有发布该提案的用户才能查看它,而该提案不应显示给其他查看个人资料的用户。
使用雄辩的话,我可以做类似的事情:
@foreach($user->idea as $idea)
...display details...
@endforeach
我的问题是,这种方法会在所有想法中以介绍的顺序循环。我可以添加@if
以仅显示我想要的内容,例如
@foreach($user->idea as $idea)
@if($idea->status !='DRAFT')
...show the idea...
@endif
@endforeach
但是我不认为这是明智的选择,我想做类似的事情
$ideas = $user->idea->where('status', '<>', 'DRAFT')
然后循环遍历$ideas
变量,或者至少,我想像这样
$ideas = $user->idea->orderBy('created_at', 'desc')
但是我不知道该怎么做。
答案 0 :(得分:6)
您可以这样做:
$ideas = $user->idea()
->where('status', '<>', 'DRAFT')
->orderBy('created_at', 'desc')
->get();
使用->idea()
时,它将开始查询。
有关如何查询关系的更多信息:https://laravel.com/docs/5.7/eloquent-relationships#querying-relations
答案 1 :(得分:1)
您可以使用这样的where子句
DB::table('products_to_categories')
->where('categories_id', $id )
->update([
'categories_id' => $unassigned_cat_id
]);
您可以像这样使用orderBy子句
DB::table('products_to_categories')
->where('categories_id', $id )
->orderBy('subId','DESC');