zurückgeben Ich versuche, ein Modell mit einer Beziehung abzufragen.Laravel: JSON-Modell mit Beziehung
Meine Methode:
public function getLabel($layerId)
{
$labelGroups = Forum_label_group::
join('forum_layer_to_labels', function ($join) use ($layerId) {
$join->on('forum_layer_to_labels.layerId', '=', 'forum_label_groups.id');
})->with('labels')->get()->toJson();
return $labelGroups;
}
Der Ausgang:
[{"id":4,"name":"Demogruppe","description":"bla","required":1,"created_at":"2016-10-22 12:29:27","updated_at":"2016-10-22 12:29:27","labelGroupId":2,"layerId":2,"labels":[]},{"id":5,"name":"Demogruppe 2","description":"bla 2","required":0,"created_at":"2016-10-22 12:29:27","updated_at":"2016-10-22 12:29:27","labelGroupId":2,"layerId":3,"labels":[]}]
Wie Sie sehen können, das Etikett Beziehung ist leer.
Jetzt versuche ich aus all stattdessen ein einziges Modell zur Abfrage:
public function getLabel($layerId)
{
return Forum_label_group::with('labels')->first()->toJson();
}
die neue Ausgabe:
"{"id":2,"name":"Demogruppe","description":"bla","required":1,"created_at":"2016-10-22 12:29:27","updated_at":"2016-10-22 12:29:27","labels":[{"id":5,"title":"Demo rot","name":"demo-rot","typeId":3,"groupId":2,"created_at":"2016-10-22 12:29:47","updated_at":"2016-10-22 12:29:47"},{"id":6,"title":"Demoblau","name":"demoblau","typeId":1,"groupId":2,"created_at":"2016-10-22 12:30:03","updated_at":"2016-10-22 12:30:03"}]}"
Und wie man jetzt sehen kann, ist alles in Ordnung. Die ganze Beziehung existiert. Gibt es ein Problem mit der ersten Abfrage? Die Beziehung scheint in Ordnung zu sein.
Gibt es Gründe, die Sie verwenden ':: mit ('Labels')' und '-> mit ('Labels')' in der gleichen eloquent Aussage? –
Whoops, du hast Recht! Das ':: with ('labels')' war ein veralteter Debugging-Test. Ich habe die Frage bearbeitet. –
Keine Sorgen; Ich glaube nicht, dass es irgendetwas wirklich beeinflusst, aber es war sicher seltsam zu sehen. –