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

问题描述 投票:2回答:2

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

我在哪里弄错了?

php laravel eloquent laravel-5.5 laravel-seeding
2个回答
2
投票

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


1
投票

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

加:

dd($cart);

确保它不是空的

在真正的应用程序中,使用firstOrFail通常更好:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.