Внедрение модели и возвращаемого значения «с» в контроллер в laravel

Во-первых, с помощью innoDB вы можете без проблем запускать эти ключи без ключа

. InnoDB позволяет ограничению внешнего ключа ссылаться на не уникальный ключ. Это расширение InnoDB для стандартного SQL.

Mabe у вас неверны ваши таблицы. Попробуйте это

Для резервирования

    Schema::create('reservations', function($table)
    {
        $table->engine = 'InnoDB';
        $table->string('id', 32)->index();
        $table->string('name', 128);
        $table->string('user_id', 32)->references('id')->on('users');
        $table->timestamps();
    });

для пользователей

    Schema::create('users', function($table)
    {
        $table->engine = 'InnoDB';
        $table->string('id', 32)->index();
        $table->string('name', 128);
        $table->timestamps();
    });

, тогда вам нужно создать связь в оговорках

public function user(){
    return $this->belongsTo('User', 'user_id');
}

, и теперь, когда вы выполняете поиск

$reservations = Reservation::with('user')->where('user_id', '=', '22beb4892ba944c8b1895855e1d4d1ad')->get();

, он должен работать! Я тестировал этот код.

0
задан Nitish Kumar 5 March 2019 в 07:37
поделиться

3 ответа

with() - это когда вы изначально получаете модель (и). Если у вас уже есть модель (ы), вы можете вместо этого использовать load(). Это называется ленивая нетерпеливая загрузка .

public function show(Standard $standard)
{
    $standard->load('stream');

    return response()->json(['data' => $standard], 200);
} 
0
ответ дан Ross Wilson 5 March 2019 в 07:37
поделиться

У вас есть несколько вариантов:

1) Вы можете использовать Ресурсы API . Это мой предпочтительный подход.

2) Если API Resources не ваша чашка чая, вам просто нужно как-то загрузить отношения. Один из способов сделать это - $standard->load('stream'). Другой способ - просто получить доступ к отношению: $standard->stream.

То, что здесь происходит, заключается в том, что любые доступные отношения превращают его в ключ модели relations, что делает сериализацию json по умолчанию немного непредсказуемой. В связи с этим я предпочитаю быть явным с ресурсами API.

3) Вы можете изменить массив $with модели Standard, включив в него stream, но я не фанат этого подхода, поскольку это означает, что каждый раз, когда Standard записи извлекаются, они будут автоматически извлекаться отношение stream.

with() - это метод, который вы вызываете для объекта Eloquent Builder, который извлекает отношения для Eager Загрузка . В этом случае вы работаете с экземпляром Model, а не с Eloquent Builder.

0
ответ дан FatBoyXPC 5 March 2019 в 07:37
поделиться

Пожалуйста, попробуйте этот код. более подробное объяснение доступно в документах Laravel

$standard->load('stream');
return response()->json(['data' => $standard], 200);
0
ответ дан CHATHURA 5 March 2019 в 07:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: