Laravel-5.5 在 Null 错误时调用成员函数产品(多对多关系)

Laravel-5.5 Call to member function products on Null error (Many to Many Relationships)

您好,我将数据库播种器创建为 "CartSeeder",但我无法开始播种,它给了我那个错误。我检查了几次我的代码,但对我来说似乎没问题。

我有三个 table、购物车、产品和数据透视表 table。我有他们的模型。您可以在下面查看有关它们的信息。

CartSeeder;

$cart = Cart::where('user_id',\Auth::id())->first();
$products = Product::inRandomOrder()->take(5)->get();
$cart->products()->sync($products,false);

购物车模型;

public function products(){
        return $this->belongsToMany('App\Product','cart_product','cart_id','product_id');
    }

产品型号;

public function carts(){
        return $this->belongsToMany('App\Cart','cart_product','product_id','cart_id');
    }

我哪里弄错了?

查看错误,确保 $cart 变量不为空。

添加:

dd($cart);

确保它不为空

同样在实际应用中,通常使用 firstOrFail 会更好:

$cart = Cart::where('user_id',\Auth::id())->firstOrFail();

在某些情况下。如果没有该用户的购物车,这将保证应用程序将停止。

这意味着您没有任何购物车,其中 user_id 等于经过身份验证的用户 ID。这是因为您 运行 使用控制台命令而非网络请求播种。