У меня отношения один на один.Моя таблица jobs
соединена с таблицей user_jobs
.
У меня есть соединение с этим отношением для получения данных пользователей, связанных с заданием.
Это мои отношения внутри Работа модель:
public function client(){
return $this->hasOne('App\ClientJob')->leftJoin('clients', 'client_jobs.client_id', 'clients.id')
->select('clients.id', 'client_id', 'job_id', 'name');
}
Эта часть кода работает, и я получаю данные клиентов.
Однако я не могу добавить предложение where для этого отношения (в частности, столбец имени, который выбирается).
Это часть моего кода, которая пытаетсяsearch users by their name
столбец:
$jobs = Job::
when($request->input('keywords'), function($query) use ($request) {
return $query->where(function ($query) use ($request) {
$keywords = $request->input('keywords');
$query->where('title', 'like', '%'.$keywords.'%');
$query->orWhereHas('client', function ($query) use ($keywords){
$query->where('name', 'like', '%'.$keywords.'%');
});
$query->orWhereHas('category', function ($query) use ($keywords){
$query->where('name', 'like', '%'.$keywords.'%');
});
$query->orWhereHas('status', function ($query) use ($keywords){
$query->where('name', 'like', '%'.$keywords.'%');
});
});
})
Эта часть получает «Столбец не найден» Ошибка.
$query->orWhereHas('client', function ($query) use ($keywords){
$query->where('name', 'like', '%'.$keywords.'%');
});
Кто-нибудь знает, какчтобы получить и запустить этот запрос, кроме удаления соединения внутри модели и перемещения его в запрос над предложением where?
EDIT
Это весь мой запрос:
$jobs = Job::
when($request->input('keywords'), function($query) use ($request) {
return $query->where(function ($query) use ($request) {
$keywords = $request->input('keywords');
$query->where('title', 'like', '%'.$keywords.'%');
$query->orWhereHas('client', function ($query) use ($keywords){
$query->where('name', 'like', '%'.$keywords.'%');
});
$query->orWhereHas('category', function ($query) use ($keywords){
$query->where('name', 'like', '%'.$keywords.'%');
});
$query->orWhereHas('status', function ($query) use ($keywords){
$query->where('name', 'like', '%'.$keywords.'%');
});
});
})
->with(['client','category' => function($query){
$query->select('id', 'name');
},'status' => function($query){
$query->select('id', 'name', 'color');
}])
->when($request->input('sort_by'), function($query) use ($request) {
if($request->sort_by == 'desc'){
$query->orderBy('created_at', 'desc');
}else{
$query->orderBy('created_at', 'asc');
}
})
->paginate(15);