php - Laravel 有关于 where 的功能
问题描述
我目前正在使用此功能来收集所有有关系的用户
$users = users::with(array('statusCurrent' => function($query)
{
$query->where('status.status', 'in');
$query->orderBy('status.date', 'DESC');
}));
$users = $users->get();
这会返回我的两个用户,如果status = 'in'
它也返回关系,但如果status = 'out'
它仍然返回行,但带有status_current = null
.
with
基本上,如果查询构建器函数中的参数不正确,我想完全忽略用户。
我试图$candidates = $candidates->has('statusCurrent')->get();
尝试只获得关系不为空的结果,但它仍然返回 StatusCurrent 关系为空的用户。
我该怎么做才能让 foreach 用户,如果我传入的任何参数with(array('statusCurrent' => function(){})
都不正确,它会被完全忽略?
编辑
用户模型
public function statusCurrent(){
return $this->hasOne('App\Status', 'user_id', 'id')->orderBy('date', 'desc')->limit(1);
}
用户可以有许多状态',但该StatusCurrent
关系旨在根据status.date
解决方案
您需要whereHas
根据他们的关系过滤掉用户
$users = users::with(array('statusCurrent' => function($query)
{
$query->orderBy('status.date', 'DESC');
}))
->whereHas('statusCurrent', function ($query) {
$query->where('status', 'in');
})
->get();
推荐阅读
- javascript - Javascript:您将如何创建一个可以通过沿轴滑动节点来修改的 blob
- arrays - Laravel 雄辩,其中定义的值介于数据库中的 json 范围值之间
- php - 搜索栏的多个字段不起作用
- reactjs - 我应该通过 Id 从 API 获取还是过滤获取的数据
- html - 为什么该函数在我的每个组件中运行两次
- c++ - C++ - 为什么这种使用地图的斐波那契记忆的实现如此缓慢?
- r - 如何将标题添加到多个列
- string - “换行”和“换行”之间的技术区别?
- angular - 在 Rxjs 6 中重写 Rxjs 4
- firebase - 在具有唯一数据库 ID 的 Firebase 实时数据库中创建数据库