Ich habe einige redegewandte Modelle mit Beziehungen zueinander, aber ich möchte, dass diese Beziehungen nur dann gesetzt werden, wenn zugehörige Daten vorhanden sind.Laravel Eloquent: Setzen Sie Beziehungen nur, wenn zugehörige Daten vorhanden sind
Zum Beispiel:
-
Department (Modell) -> hasMany -> Arbeiter (Model) (Relation nur gesetzt werden, wenn die Abteilung der Arbeitnehmer liegen, sonst nicht gesetzt)
Ist es möglich? Ich habe versucht, diese und gescheiterte horrably: (in Abteilung Modell)
public function worker() {
$model = new Department();
if(isset($model->relations)) {
return $this->hasMany(Worker::class, 'wrk_department_id');
}
}
// EDIT:
Wenn Abteilung keine Arbeiter hat meine Ausgabe ist wie:
{
"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"
}
}
Wenn Abteilung hat Arbeiter, alles funktioniert wie erwartet:
{
"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
Ich versuche, die leeren Felder, um loszuwerden, (zB .: „Arbeiter“: []), die erscheinen, wenn ihre
Was möchten Sie erreichen? Holen Sie nur Abteilungen mit Arbeitern oder etwas anderes? –
bearbeitet den Beitrag –
Ihre Ausgabe wird von der Abfrage, die Sie verwenden, verwaltet. Nicht nach dem, was Sie in Ihrem 'Modell' definieren. – Gayan