您好我将数据库播种机创建为“CartSeeder”,但我无法开始播种,它给了我这个错误。我多次检查了我的代码,但对我来说似乎很好。
我有三个桌子,推车,产品和数据透视表。我有他们的模特。您可以在下面看到有关它们的信息。
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');
}
我在哪里弄错了?
答案 0 :(得分:2)
这意味着您没有user_id
等于经过身份验证的用户ID的推车。这是因为您使用控制台命令而不是Web请求运行播种器。
答案 1 :(得分:1)
查看错误,确保$cart
变量不为空。
添加:
dd($cart);
确保它不为空
同样在真实应用中,使用firstOrFail
通常更好:
$cart = Cart::where('user_id',\Auth::id())->firstOrFail();
在某些情况下。如果此用户没有购物车,这将保证应用停止。