Надеюсь, это расскажет, как вы можете воспользоваться преимуществами отношений.
$record = Table2Model::find(1);
// Returns an ActiveRecord of Table2
dd(record->table_1);
// I think of dd as a friendlier version of var_dump and die
// table_1 being the relationship name, you can see all records that are
// related to that model.
// (you may need to add 'table_1' to $visible property in the Table2Model),
Вы можете вставить Table1Model (относится к Table2Model), используя следующее:
$record = Table2Model::find(1);
$record->table_1()->create($arrayOfTable1Data);
Вы также можете удалить все записи Table1Model, связанные с Table2Model, выполнив ->delete()
в отношении (после того, как вы получили ActiveRecord для него)
$record = Table2Model::find(1);
$record->table_1()->delete();
С другой стороны, это не так просто из-за предоставленного вами примера (Table2Model имеет много Table1Model, то есть вы не можете вставить Table1Model без существующей записи Table2). Что вы можете сделать, если значение foreign_key можно обнулять, это:
$record = Table1Model::create($arrayOfTable1Data);
arrayOfTable1Data['table2_id'] = $record->table_2()->create($arrayOfTable2Data)->id;
$record->table_1()->update($arrayOfTable1Data);
Личная заметка:
Мне нравится давать именам отношений имена других моделей и делать их единичными или множественными (например, отношения с именами пользователь или пользователи) в зависимости от того, имеет ли она 1 зависимость или имеет много.