В моем проекте Laravel у меня есть две красноречивые модели Set
и Card
, между ними есть отношения один ко многим. Set
имеет много Cards
, а Cards
принадлежит Set
.
Я пытаюсь получить данные с помощью Eloquent Eager Loading с помощью функции with()
. Но по какой-то причине массив cards
внутри sets
возвращается пустым []
.
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');
}
}
Код контроллера
$sets = Set::with([
'cards' => function($query){
$query->select('name', 'description');
},
])->get();
return $sets;
name
и description
- это поля, которые у меня есть в Cards
таблица, за исключением первичного ключа и внешнего ключа.
Возвращается с "cards": []
в моем JSON
массиве sets
.
Я пытался использовать приведенный ниже код в контроллере,
$sets = Set::with('cards.*')->get();
return $sets;
Не работает.
Попытка добавления внешнего ключа (set_id, который находится в таблице карт) в методе hasMany
в моей модели Set
, которая создает связь с Cards
Таблица. Но безрезультатно.
Кстати, когда я пытался извлечь данные из таблицы Cards
отдельно от моего CardController
, он вернул все данные Cards
.
Немного подсказки означало бы большую помощь. Спасибо за ваше время.