Выполните операцию добавления в Laravel updateOrCreate

#php #laravel #eloquent

Вопрос:

я работаю над проектом электронной коммерции, и у меня возникла проблема в системе корзины. таким образом, пользователь может добавить товар в корзину по его цене, и если пользователь снова добавит тот же товар, цена (в корзине) должна увеличиться. например, я добавляю яблоко в корзину за 20 долларов, затем я добавляю его снова за 10 долларов, цена должна быть 30 долларов прямо сейчас.

я пытался сделать это

 $cart = Cart::updateOrCreate(  ['order_id' =gt; $order-gt;id, 'product_id' =gt; $request-gt;product_id],  ['price' =gt; DB::raw("price   $request-gt;price")] );  

это прекрасно работает для обновления цены из существующей модели корзины, но цена всегда равна нулю в базе данных, если создается новая модель корзины. у вас, ребята, есть какие-либо предложения по устранению этой проблемы? Спасибо

Ответ №1:

Вы можете использовать IFNULL() в своем необработанном запросе

 $cart = Cart::updateOrCreate(  ['order_id' =gt; $order-gt;id, 'product_id' =gt; $request-gt;product_id],  ['price' =gt; DB::raw("IFNULL(price, 0)   $request-gt;price")] );  

IFNULL(field, 0) вернет 0, если поле равно НУЛЮ, и значение, если нет.

Комментарии:

1. это работает, большое вам спасибо 🙂