Мы разрабатываем электронную коммерческую корзину, используя Laravel 5.3, в которой есть элементы. Таким образом, наша тележка имеет отношение 1: n к элементам.Почему HasOneOrMany не обновляет отношения с родителями?
Когда мы добавляем товар в корзину с помощью Illuminate\Database\Eloquent\Relations\HasOneOrMany::save()
, он не подталкивает новый элемент к нашей коллекции $cart->items
, это необходимо сделать вручную с использованием метода Collection::push()
.
Мы спрашиваем об этом, потому что метод Illuminate\Database\Eloquent\Relations\BelongsTo::associate()
делает это, поэтому мы не знаем, является ли это ошибкой.
Просто для лучшего понимания:
Теперь нам нужно сделать, это:
$cart = Cart::first();
$cartItem = new CartItem();
$cartItem->quantity = 1;
$cartItem->base_price = 1;
$cartItem->paid_price = 1;
$cart->items()->save($cartItem);
print($cart->items->count()); # returns 0
$cart->items->push($cartItem);
print($cart->items->count()); # returns 1
Что мы хотим сделать это выше код, а затем быть в состоянии interate с нашим списком (например, обновление значения порядка), не вызывая других методов.
$cart = Cart::first();
$cartItem = new CartItem();
$cartItem->quantity = 1;
$cartItem->base_price = 1;
$cartItem->paid_price = 1;
$cart->items()->save($cartItem);
print($cart->items->count()); # returns 1
Мы собираемся сделать запрос на тяну, потому что мы видели код, и это можно сделать. Но правильно ли это? Можем ли мы это сделать?
Дублированный здесь: https://github.com/laravel/framework/issues/14719
Благодаря