Laravel получить недавно созданные связанные модели без использования с или загрузить - PullRequest
0 голосов
/ 28 августа 2018

У меня есть особая проблема, когда я создаю связанную модель как таковую:

$detail = new \App\Detail
$detail->item = "Soda Pop"
$detail->quantity += 1
$order->details()->save($detail)

Этот код находится в пределах оператора foreach , и я в итоге создаю детали для каждого приобретенного предмета. Но у меня есть особое требование: если элемент уже существует в списке сведений, добавьте к нему + 1 .

Но при сохранении отношений у меня нет доступа к объектам, и это заставляет меня перезагружаться из базы данных. Так что либо я должен выполнить $order->load('details'), чтобы заставить код работать.

Есть ли способ получить доступ к недавно созданному объекту и просто проверить из памяти, был ли он вставлен?

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Вы можете использовать firstOrNew :

$detail = $order->details()->firstOrNew(['item' => 'Soda Pop']);

$detail->quantity += 1;

$detail->save();
0 голосов
/ 28 августа 2018

Попробуйте с помощью метода updateOrCreate

$detail = App\Detail::updateOrCreate(
    ['order_id' => $order-id, 'item' => 'Soda Pop'],[]
);

$detail->quantity += 1;

$detail = $detail->update();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...