Наблюдатель Laravel с октаном: слизняк генерируется при создании события, но не сохраняется в БДPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Наблюдатель Laravel с октаном: слизняк генерируется при создании события, но не сохраняется в БД

Сообщение Anonymous »

Я использую создающий элегантный наблюдатель модели для автоматического генерации слизняка перед вставкой нового продукта в базу данных.public function creating(Product $product): void
{
if (empty($product->slug)) {
$product->slug = ProductSlugManager::handle($product);
\Log::info('Observer:creating', $product->only(['id', 'slug']));
}
}
< /code>
Правильно сгенерируется слизняком - я могу подтвердить его через журналы: < /p>
Observer:creating Product ID=null slug=some-generated-slug
< /code>
Но проблема в том, что окончательный запрос вставки (захваченный через db :: listen ()) не включает в себя поля слизняки: < /p>
insert into "products" ("name", "description", "created_at", "updated_at") values (?, ?, ?, ?) returning "id"
< /code>
Таким образом, слизняк никогда не сохраняется в базе данных - он появляется на возвращаемой модели, но не в самом DB. Postgresql, если это имеет значение. < /P>
Как я могу убедиться, что слизняк, сгенерированный в создании наблюдателя, фактически включен в запрос SQL вставки? безопасно мутируют атрибуты незадолго до создания?

Подробнее здесь: https://stackoverflow.com/questions/797 ... -not-saved
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»