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。这是因为您 运行 使用控制台命令而非网络请求播种。
您好,我将数据库播种器创建为 "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。这是因为您 运行 使用控制台命令而非网络请求播种。