Во-первых, с помощью innoDB вы можете без проблем запускать эти ключи без ключа
. InnoDB позволяет ограничению внешнего ключа ссылаться на не уникальный ключ. Это расширение InnoDB для стандартного SQL.
blockquote>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();
, он должен работать! Я тестировал этот код.
with()
- это когда вы изначально получаете модель (и). Если у вас уже есть модель (ы), вы можете вместо этого использовать load()
. Это называется ленивая нетерпеливая загрузка .
public function show(Standard $standard)
{
$standard->load('stream');
return response()->json(['data' => $standard], 200);
}
У вас есть несколько вариантов:
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.
Пожалуйста, попробуйте этот код. более подробное объяснение доступно в документах Laravel
$standard->load('stream');
return response()->json(['data' => $standard], 200);