Метод присоединения ничего не делает в наблюдателе - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть наблюдатель для модели. Когда модель создана, я хочу создать и прикрепить другую модель на основе параметра в запросе.

Новая модель успешно создана. Но это не так.

Функция наблюдателя:

public function created(Work $work)
{
    $new_publisher = request()->new_publisher;

    if($new_publisher) {
        $publisher = Publisher::create([
            'publisher_name' => $new_publisher,
            'type' => 2,
            'status' => false,
        ]);
        $work->publishers()->attach($publisher->id);
    }
}

Если я выполню

dd($publisher->id);

перед выполнением команды присоединения, я получу правильный идентификатор.

Есть какая-нибудь подсказка о том, что здесь происходит? Я также пытался с:

DB::table('publisher_work')->insert(['publisher_id' => $publisher->id,'work_id' => $work->id]);

но не повезло.

Спасибо.

1 Ответ

0 голосов
/ 06 февраля 2020

Отношение было определено правильно, и наблюдатель модели также выполнялся. Я добавил

\Log::info(
    $query->sql, $query->bindings, $query->time
);

в AppServiceProvider, чтобы увидеть, что происходит.

Оказалось, что вставка была сделана, но затем также было выполнено удаление. На глубине копания я увидел, что другой пакет, который я установил, делал $ model-> syn c ([]), удаляя предыдущее присоединение.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...