Laravel 5:如何使用 'where' 或 'orderBy' 使用 eloquent?
Posted
技术标签:
【中文标题】Laravel 5:如何使用 \'where\' 或 \'orderBy\' 使用 eloquent?【英文标题】:Laravel 5: How to use 'where' or 'orderBy' using eloquent?Laravel 5:如何使用 'where' 或 'orderBy' 使用 eloquent? 【发布时间】:2019-04-17 19:54:23 【问题描述】:首先,这不是Laravel 4: how to "order by" using Eloquent ORM的副本
我有这个模型 User,然后我有另一个模型 Idea。我正在写一个包含用户详细信息的视图,我想发布用户提出的所有想法。现在,想法有一个状态,第一个状态是“草稿”,这意味着只有发布想法的用户才能查看它,该想法不应该显示给查看个人资料的其他用户。
使用 eloquent 我可以执行以下操作:
@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')
但我不知道该怎么做。
【问题讨论】:
【参考方案1】:你可以这样做:
$ideas = $user->idea()
->where('status', '<>', 'DRAFT')
->orderBy('created_at', 'desc')
->get();
当您使用->idea()
时,它将启动一个查询。
有关如何查询关系的更多信息:https://laravel.com/docs/5.7/eloquent-relationships#querying-relations
【讨论】:
非常感谢!我错过了第一个()和get()。呵呵! @luisfer 没问题!祝你今天过得愉快。 :)【参考方案2】:你可以像这样使用 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');
【讨论】:
谢谢!我不想使用查询生成器,但这也很完美,谢谢!以上是关于Laravel 5:如何使用 'where' 或 'orderBy' 使用 eloquent?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用where关键字检查Laravel 5.2路由中的状态参数?
如何在 Laravel 中 MySQL 查询的 where 子句中使用数组 [重复]
在laravel 5.4中调用一个成员函数where()on float
如何在laravel 5.2(where condition)中调用all()方法