Я сейчас работаю над этим запросом
select *
from incidents
where from_id in (SELECT id FROM users WHERE generalist = 579)
or user_id = 579
order
by(created_at)
Модель моего пользователя имеет id
и столбец generalist
.Модель моего Инцидента имеет id
, user_id
это идентификатор босса, а from_id
это идентификатор сотрудника
Идея состоит в том, что generalist
может видеть Инциденты, но они могут отсутствовать в user_id
столбец, поэтому мне нужно получить всех пользователей, чей универсальный идентификатор совпадает с
Я пытаюсь сделать это на Eloquent и получаю в итоге // $ uid - это идентификатор пользователя
$query->whereIn('from_id',User::select('id')->where('generalist',$uid)->get())
->orWhere('user_id',$uid);
И я получаю то, что хочу, насколько я могу видеть, но позже у меня есть вход, чтобы я мог отфильтровать информацию // Передано в переменную $ search
$query->where(function($tq) use ($search){
$tq->whereHas('from',function($query2) use ($search){
$query2->where('firstname', 'like', "%$search%")
->orWhere('lastname', 'like', "%$search%")
->orWhere('number', 'like', "%$search%");
})
->orWhere('status', 'like', "%$search%");
});
И это «от»функция в модели
public function from() {
return $this->hasOne('App\User','id','from_id');
}
Моя проблема в том, что фильтрация не работает, но когда этот $query->where('user_id', $uid);
работает, фильтр работает отлично.
Я действительно не понимаю, почему не работает, и еслиВам нужно больше информации, пожалуйста скажите мне