У меня есть несколько черных моделей с отношениями друг с другом, но я хочу, чтобы эти отношения устанавливались только в том случае, если существуют соответствующие данные.Laravel Eloquent: установить отношения только в том случае, если существуют связанные данные
Например:
-
отдел (модель) -> hasMany -> Рабочий (модель) (связь должна быть устанавливается, только если отдел связанные работников, в противном случае не установлена)
Возможно ли это? Я попытался это и не horrably: (подразделении модели)
public function worker() {
$model = new Department();
if(isset($model->relations)) {
return $this->hasMany(Worker::class, 'wrk_department_id');
}
}
// EDIT:
Когда отдел не имеет рабочих мой выход, как:
{
"data": {
"type": "department",
"id": "8",
"attributes": {
"accessory": [],
"department": "Marketing",
"department_id": 8,
"dept_floor_id": 2,
"inventory": [],
"software": [],
"worker": []
},
"links": {
"self": {
"href": "http://127.0.0.1:8000/api/v2/department/8"
}
}
},
"links": {
"self": {
"href": "http://127.0.0.1:8000/api/v2/department/8"
}
},
"jsonapi": {
"version": "1.0"
}
}
Когда отдел работает, все работает как ожидалось:
{
"data": {
"type": "department",
"id": "1",
"attributes": {
"department": "Entwicklung",
"department_id": 1,
"dept_floor_id": 3
},
"links": {
"self": {
"href": "http://127.0.0.1:8000/api/v2/department/1"
}
},
"relationships": {
"worker": {
"data": [
{
"type": "worker",
"id": "5"
},
{
"type": "worker",
"id": "8"
},
{
"type": "worker",
"id": "11"
},
{
"type": "worker",
"id": "13"
}, //and so on
Я пытаюсь избавиться от пустых массивов (например: «рабочий»: []), которые появляются, когда их нет связанных данных.
Что вы пытаетесь достичь? Получить только отделы с рабочими в нем или что-то еще? –
Редактировал сообщение –
Ваш результат управляется запросом, который вы используете. Не то, что вы определяете в своей «модели». – Gayan