Я пытаюсь выполнить запрос where для моего отношения с именем employee_label
.
Таблица employee_label
выглядит следующим образом:
+----+-------------+----------+
| id | employee_id | label_id |
+----+-------------+----------+
| 1 | 123 | 123 |
| 2 | 456 | 456 |
| 3 | 768 | 768 |
+----+-------------+----------+
Остальные where()
и orWhere()
получает пустую array()
по умолчанию, но может содержать данные, например: ['inactive' => 0]
.
Ожидаемый результат: Я ожидаю получить сотрудников с, например, меткой 123
, когда я предоставлю метку 123
как where()
для отношения.
Фактический результат: Все сотрудники возвращаются, данные не фильтруются.
Код:
$employees = Employee::with(['employee_label' => function($query) use ($request) {
$query->where('label_id', '=', $request->get('label'));
}])->where($searchQuery)->orWhere($orQuery)->orderBy('inactive', 'asc')->paginate(20);
Что я пробовал: Я пытался изменить $query->where('label_id')
на $query->where('employee_label.label_id')
без изменений в результате.
Модель Employee
class Employee extends Model
{
protected $table = 'employees';
protected $fillable = [
'name',
'surname',
'inactive',
'entered_into_service'
];
public function employee_label() {
return $this->hasOne('App\EmployeeLabel');
}
}
Модель EmployeeLabel
class EmployeeLabel extends Model
{
protected $table = 'employee_label';
protected $fillable = [
'employee_id',
'label_id'
];
public function employee() {
return $this->belongsTo('App\Employee');
}
public function label() {
return $this->belongsTo('App\Label');
}
}