2017-08-03 14 views
0

私は奇妙な問題が起こるはずがありません。Laravelのピボットテーブルの列の値を取得します。

私はいくつかの他のプロジェクトのためにこれをやったとして、それが動作するはずピボットテーブル

$product = Product::find(296); 

dd($product->pivot->aisle); 

の値をretriveするためにコードの一部を持っています。突然、それは今日私に次のエラーを与えている:私は私の小売店モデルでは

public function retailers(){ 

return $this->belongsToMany(Retailer::class)->withPivot('aisle','ifinstock','ifstock','ifticketed','ifonshelf','iflowstock','note','id','created_at','updated_at','stocklevel'); 

} 

::私は以下の持っている私の製品モデルで

(1/1) ErrorException 
Trying to get property of non-object 
in ProductController.php (line 42) 
at HandleExceptions->handleError(8, 'Trying to get property of non-object', 
'C:\\laragon\\www\\Sales\\app\\Http\\Controllers\\ProductController.php', 
42, array('retailer' => object(Retailer), 'product' => object(Product))) 
in ProductController.php (line 42) 

public function products(){ 

return $this->belongsToMany(Product::class)->withPivot('aisle','ifinstock','ifstock','ifticketed','ifonshelf','iflowstock','note','id','created_at','updated_at','stocklevel'); 

} 

私はできませんどこが間違っているかを見てください

+0

dd($ product)とdd($ product-> pivot)を試してみてください。どちらかがnullを返しますか?もしそうなら、問題はそこから始まります。 – Jed

+0

'' 'dd($ product-> retailers);' ''試してみてください –

+0

あなたの商品モデルはどのように見えますか? –

答えて

0

Product::find(296)にアクセスすると、関連モデルからアクセスしていないため、製品モデル自体にアクセスしているため、Laravel/Eloquentはピボットフィールドなどの関係情報をロードしませんでした。製品モデルに対して定義されている場合、それらは関係のために定義されます。

あなたがした場合:製品自体は、任意のピボットフィールドを持っていない要するに

$product = $retailer->products->first(); 
var_dump($product->pivot); 

、:

$retailer = Retailer::with('products')->find(...); 

を次にそのモデル上の製品の関係にアクセスし、それが動作するはずです。ピボットフィールドは、製品小売業者の関係です。

関連する問題