Красноречивая загрузка не возвращает связанные данные модели - PullRequest
0 голосов
/ 01 апреля 2020

В моем проекте 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.

Немного подсказки означало бы большую помощь. Спасибо за ваше время.

Ответы [ 2 ]

3 голосов
/ 01 апреля 2020

Попробуйте этот код в вашем контроллере,

$sets = Set::with('cards')->get();

return $sets;

Дайте мне знать, если он работает

0 голосов
/ 01 апреля 2020

Попробуйте что-то вроде этого:

 public function sets() {
    return $this->belongsTo('App\Set','id','id_set');
}

вторым параметром "id" является идентификатор таблицы Set, а третьим параметром "id_set" является ключ поиска в таблице карт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...