Я изучаю Eloquent Model Relationships в Laravel. В моем демонстрационном проекте у меня есть две таблицы Sets
и Cards
, они имеют отношение One to many
. Один Set
имеет множество Cards
, а Card
принадлежит Set
.
Я хочу, чтобы выходные данные содержали вместе Sets
и Cards
во вложенном массиве JSON
, Cards
в Sets
. Я установил отношения в обеих моделях.
Мой ожидаемый результат
[
{
"set_id":1,
"name":"English",
"description":"English Language",
"created_at":"2020-03-31T15:41:55.000000Z",
"updated_at":"2020-03-31T15:41:55.000000Z"},
"cards:
{
"card_id":1,
"name":"Greetings",
"description":"Greetings related questions",
"set_id":1,
"created_at":"2020-03-31T15:45:03.000000Z",
"updated_at":"2020-03-31T15:45:03.000000Z"
}
}
]
Set. php
<?php
namespace App;
use App\Card;
use Illuminate\Database\Eloquent\Model;
class Set extends Model
{
protected $table = "sets";
public function cards() {
return $this->hasMany('App\Card');
}
}
Card. php
<?php
namespace App;
use App\Set;
use Illuminate\Database\Eloquent\Model;
class Card extends Model
{
protected $table = "cards";
public function sets() {
return $this->belongsTo('App\Set');
}
}
В моем Controller
я пытался получить результат по этой строке return Set::all()->cards;
, но там написано Property [cards] does not exist on this collection instance.
Моя миграция В файлах установлен внешний ключ в таблице Cards
, поэтому я думаю, что связь между таблицами установлена правильно или, возможно, я ошибаюсь.
Я прочитал подробные Laravel Do c для Eloquent Relationships, но не нашел ни одного запроса, который бы возвращал связанные модели вместе во вложенном JSON
, как я и ожидал.