@MarkBogrov

Как создать связанные записи в момент сохранения модели?

Как в момент создания сущности создать связанные с ней другие сущности?

Имеется:
Например у меня есть главная модель Node в которой хранятся основные поля для каждой сущности на сайта, такие как Id, title, created_at, updated_at etc...

Затем для каждого типа сущности есть своя таблица + модель с набором полей для данной сущности. Предположим есть две доп сущности Events и Places.

Вопрос:
Как в момент сохранения Node получить её Id и записать значения полей связанной сущности с id головной сущности Node? Как вообще это делается? Ведь одна сущность в гибких проектах никогда не равна одной таблице в БД, а в момент создания обычно ещё неизвестен будущий id.
  • Вопрос задан
  • 2242 просмотра
Решения вопроса 1
@Novikofff
PHP Developer
В Модели Node создать релэйшены к Events и Places:
/**
     * Relations to Events
     *
     * @return HasMany
     */
    public function events() : HasMany
    {
        return $this->hasMany(Events::class);
    }

    /**
     * Relations to Places
     *
     * @return HasMany
     */
    public function places() : HasMany
    {
        return $this->hasMany(Places::class);
    }


А потом уже после создания элемента сущности работаешь через эти релейшены:
$node = Node::create([
    'title' => 'foobar',
    'etc' => '123'
]);
$node->events()->create([
    'title' => 'foobar',
    'etc' => '123'
]);
$node->places()->create([
    'title' => 'foobar',
    'etc' => '123'
]);


Или так:
Node::create([
    'title' => 'foobar',
    'etc' => '123'
])->events()->create([
    'title' => 'foobar',
    'etc' => '123'
]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
neuotq
@neuotq
Прокрастинация
$node = new Node;
$node->blahblah = $blahblah;
$node->save();

После сохранения, можешь обращаться $node->id и будет счастье.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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