В настоящее время я использую эту функцию, чтобы собрать всех моих пользователей с отношением
$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
не соответствуют действительности.
Iпопытался $candidates = $candidates->has('statusCurrent')->get();
попытаться получить результаты только в том случае, если отношение не равно нулю, но оно по-прежнему возвращает пользователей, если отношение StatusCurrent равно нулю.
Как мне сделать это так, чтобы каждый пользователь мог, если что-тоаргументы, которые я передаю в with(array('statusCurrent' => function(){})
, не соответствуют действительности, они полностью игнорируются?
РЕДАКТИРОВАТЬ
Пользователи Модель
public function statusCurrent(){
return $this->hasOne('App\Status', 'user_id', 'id')->orderBy('date', 'desc')->limit(1);
}
Пользователь можетиметь много статусов », но отношение StatusCurrent
предназначено для возврата их 1 самого последнего статуса на основе status.date