Думаю, что я упускаю что-то очевидное здесь, но я хочу определить однозначное, однозначное отношение от таблицы_1 к таблице_2, например, схема table1:
Schema::create('table1', function (Blueprint $table) {
// Some field definitions
$table->integer('table2_id')->unsigned();
$table->foreign('table2_id')->references('id')->on('table2')->onDelete('cascade');
});
В Таблице 2 ничего не известно о Таблице 1, поэтому просто определена группа полей. Модель для Таблицы 1 имеет:
public function table2() // Get table2 record
{
return $this->hasOne('App\Table2');
}
Вопросы:
а.) Нужно ли это отношение в записи, чтобы иметь возможность искать соответствующую запись таблицы 2 из записи таблицы 1?
б.) Как мне установить отношения в моем коде? В настоящее время мой код контроллера:
$table_1_record = new Table1();
// What code here to define the relationship, using Eloquent? Or do I just do:
$table_1_record->table2_id = my_table2_record->id;
// But this just sets it manually doesn't it, rather than using Eloquent?
То, что меня смущает, находится здесь: https://laravel.com/docs/5.6/eloquent-relationships#one-to-one немного дальше от ссылки, где написано
Eloquent определяет внешний ключ отношения на основе
название модели. В этом случае модель телефона автоматически считается
есть внешний ключ user_id.
Применяя этот пример к моему коду, я не хочу определять table1_id в моем Table_2 - но звучит из этой цитаты из документов, которые мне нужны, чтобы найти запись table2 из table1 .. .
c.) Есть ли смысл в этой строке в миграции: $table->foreign('table2_id')->references('id')->on('table2')->onDelete('cascade');
и вообще использовать Eloquent (я хочу сделать все правильно Laravel), или мне просто нужно вручную установить table2_id, как в вопросе b .) выше?
Примечание: я не хочу определять обратную связь, поскольку мне не нужно находить запись table_1 из записи table_2.
Спасибо за любую помощь.