Laravel Dingo получает данные из нескольких таблиц - PullRequest
0 голосов
/ 25 августа 2018

Я пытаюсь получить данные из двух таблиц с отношением один ко многим. Мне нужно, чтобы он возвращался в одном ответе, поскольку он будет отображаться одновременно. Однако я не понимаю, как вернуть расширенный объект. Сейчас у меня что-то вроде этого в контроллере

public function show(Site $id)
    {
        foreach ($id->features() as $feature) {
            $id->features[] = $feature;
        }

        return $id;
    }

А это моя модель

class Site extends Model
{
    protected $fillable = ['path', 'site_link'];

    public $timestamps = false;

    public function features() {
        return $this->hasMany('App\SiteFeature');
    }
}

Пока что он возвращает пустой массив свойств feature.

1 Ответ

0 голосов
/ 25 августа 2018

Если вы используете неявное связывание модели, то отношение Lazy eager Load features в действии контроллера, потому что модель уже загружена

public function show(Site $site)
{
    $site->load('features');

    return $site;
}

Если неявное связывание модели, то Eager load features, используя withво время загрузки модели

public function show($id)
{
    $site = Site::with('features')->find($id);

    return $site;
}

Проверьте детали для отношения загрузки https://laravel.com/docs/5.6/eloquent-relationships#constraining-eager-loads

...