2017-08-03 114 views
0

我遇到了一個不應該發生的奇怪問題。在Laravel中檢索數據透視表列值

我有一段代碼以檢索數據透視表

$product = Product::find(296); 

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

,因爲我已經這樣做了幾個其他項目它應該工作的價值。突然,它給我下面的錯誤今天:

(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 retailers(){ 

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

} 

在我的零售商模式,我有:

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將不會加載任何關係信息,如數據透視表字段,因爲這些透視字段不是爲產品模型定義,它們是爲關係定義的。

如果你做的事:

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

然後訪問該型號的產品的關係,它應該工作:

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

總之,產品本身不具有任何數據透視表字段。樞軸字段用於產品零售商的關係。