我们正在使用 Laravel 5.3 开发一个电子商务购物车,其中包含商品。所以我们的购物车与物品有 1:n 的关系。
当我们使用它将一些产品添加到购物车时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
我们想要做的是上面的这段代码,然后能够与我们的列表进行交互(例如更新订单值),而无需调用其他方法。
$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
谢谢