【发布时间】:2018-06-04 11:19:47
【问题描述】:
我目前正在使用此功能来收集所有有关系的用户
$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 关系为空的用户。
如果我传递给with(array('statusCurrent' => function(){}) 的任何参数不正确,我该怎么做才能让foreach 用户完全忽略它?
编辑
用户模型
public function statusCurrent(){
return $this->hasOne('App\Status', 'user_id', 'id')->orderBy('date', 'desc')->limit(1);
}
用户可以有很多状态',但StatusCurrent 关系是为了返回基于status.date 的最近状态1
【问题讨论】:
-
尝试不使用
status.,例如->where('status', 'in');和->orderBy('date', 'DESC'); -
用户的最新状态必须是
in吗?
标签: php laravel laravel-5 eloquent