You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel报错:BadMethodCallException,Collection::save方法不存在

解决Illuminate\Database\Eloquent\Collection::save方法不存在的错误

错误原因

Auth::user()->orders返回的是Eloquent集合对象,而集合类没有save()方法。save()是单个Eloquent模型的方法,你误用了集合来调用模型专属方法。

解决方案

将代码中的:

Auth::user()->orders->save($order);

修改为:

Auth::user()->orders()->save($order);

原理说明

  • Auth::user()->orders:直接访问关联属性,会立即执行数据库查询,返回该用户所有订单的集合(Collection)
  • Auth::user()->orders():调用关联关系方法,返回的是关联查询构造器,它提供了save()方法,能自动将新的Order模型与当前用户关联,并完成数据库保存操作。

修正后的完整控制器代码片段

public function checkout(Request $request)
{
    $this->validate(request(), [
        'name' => 'required|string',
        'phonenumber' => 'required|regex:/^([0-9\s\-\+\(\)]*)$/|min:8',
        'country' => 'required|string',
        'city' => 'required|string',
        'address' => 'required',
        'zipcode' => 'required|digits:5',
        'creditcardnumber' => 'required|digits:16',
        'expiremonth' => 'required|digits:2',
        'expireyear' => 'required|digits:2',
        'cvc' => 'required|digits:3',
    ]);

    if(!Session::has('cart')){
        return view('cart.index');
    }
    $oldCart = Session::get('cart');
    $cart = new Cart($oldCart);

    foreach ($cart->items as $order) {
        Product::where('id',$order['product_id'])
                ->decrement('quantity');
    }


    $order = new Order();
    $order->cart = serialize($cart);
    $order->address = $request->input('address');
    $order->name = $request->input('name');
    $order->phonenumber = $request->input('phonenumber');
    $order->city = $request->input('city');
    $order->country = $request->input('country');
    $order->zipcode = $request->input('zipcode');

    // 修正后的代码
    Auth::user()->orders()->save($order);

    Session::forget('cart');
    return redirect()->route('home.index')->with('success','Successfully purchased the products!');
}

内容的提问来源于stack exchange,提问作者lines

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 18:20:52