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

时间:2017-12-31 10:10:29

标签: php laravel eloquent laravel-5.5 laravel-seeding

您好我将数据库播种机创建为“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');
    }

我在哪里弄错了?

2 个答案:

答案 0 :(得分:2)

这意味着您没有user_id等于经过身份验证的用户ID的推车。这是因为您使用控制台命令而不是Web请求运行播种器。

答案 1 :(得分:1)

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

添加:

dd($cart);

确保它不为空

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

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

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