前端:
全选产品详情单价数量金额删除
@foreach($cartItems as $item)
productSku->on_slae ? 'checked' : 'disabled' }}>
{{ $item->productSku->product->title }}
{{ $item->productSku->title }}
@if(!$item->productSku->product->on_sale)
该商品已下架
@endif
productSku->product->on_sale) disabled @endif name="amount" value="{{ $item->amount }}">
@endforeach
控制器:
class CartController extends Controller
{
//购物车列表
public function index(Request $request)
{
$cartItems = $request->user()->cartItems()->with(['productSku.product'])->get();
return view('carts.index',compact('cartItems'));
}
//购物车
public function add(AddCartRequest $request)
{
$user = $request->user();
$skuId = $request->input('sku_id');
$amount = $request->input('amount');
// 从数据库中查询该商品是否已经在购物车中
if ($cart = $user->cartItems()->where('product_sku_id', $skuId)->first()) {
// 如果存在则直接叠加商品数量
$cart->update([
'amount' => $cart->amount + $amount,
]);
} else {
// 否则创建一个新的购物车记录
$cart = new CartItem(['amount' => $amount]);
$cart->user()->associate($user);
$cart->productSku()->associate($skuId);
$cart->save();
}
return [];
}
}
目前数据库:
public function up()
{
Schema::create('cart_items', function (Blueprint $table) {
$table->increments('id');
$table->unsignedInteger('user_id')->comment('所属用户ID');
//这里的 user_id是 users,并且做了级联删除, 一旦删除了用户,所关联的用户内容也会删除.
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->unsignedInteger('product_sku_id')->comment('商品 SKU ID');
$table->foreign('product_sku_id')->references('id')->on('product_skus')->onDelete('cascade');
$table->unsignedInteger('amount')->comment('商品数量');
//$table->timestamps();
});
效果:
是不是需要在数据库增加字段--》再到控制器写相应的方法才可以;或者有没有其他更好的办法,有的请帮忙贴下,谢谢