php - Laravel 5:如何使用 'where' 或 'orderBy' 使用 eloquent?
问题描述
首先,这不是Laravel 4 的副本:如何使用 Eloquent ORM “排序”
我有这个模型用户,然后我有另一个模型想法。我正在写一个包含用户详细信息的视图,并且我想发布用户提出的所有想法。现在,想法有一个状态,第一个状态是“草稿”,这意味着只有发布想法的用户才能查看它,该想法不应该显示给查看个人资料的其他用户。
使用 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')
但我不知道该怎么做。
解决方案
你可以这样做:
$ideas = $user->idea()
->where('status', '<>', 'DRAFT')
->orderBy('created_at', 'desc')
->get();
当您使用->idea()
它时,它将启动一个查询。
有关如何查询关系的更多信息:https ://laravel.com/docs/5.7/eloquent-relationships#querying-relations
推荐阅读
- image-processing - 在FFmpeg中使用mininterpolate来减少模糊帧是否很好
- python - 当测试文件夹包含 __init__.py 时,在 pytest 中找不到模块错误
- c - gdb 错误地解析堆栈变量位置
- javascript - 如何在一个语句中声明和定义多个变量?
- javascript - Passport.js、会话和反应 | 从 /login 路由以外的任何路由访问 req.user 是未定义的
- swagger-ui - 在 SpringDoc OpenAPi 中未禁用 petstore URL
- python - 在 Google Colab 中安装 RDKit
- bash - 如何将范围保存到变量中以便稍后在 for 循环中使用它
- qt - 同一物业的不同价值
- python - 无法使用 Tableau Server 客户端 (TSC-Python) 连接到 Tableau Server