2017-08-03 2 views
0

Ich habe ein seltsames Problem, das nicht passieren sollte.Pivot-Tabellenspaltenwert in Laravel abrufen

Ich habe ein Stück Code Wert einer Pivot-Tabelle retrive

$product = Product::find(296); 

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

Es sollte funktionieren, wie ich dies für ein paar andere Projekte gemacht haben. Plötzlich heute ist es mir folgende Fehler geben:

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

In meinem Produktmodell ich unten haben:

public function retailers(){ 

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

} 

In meinem Händler Modell ich habe:

public function products(){ 

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

} 

Ich kann es einfach nicht sehen, wo schief gelaufen ist?

+0

Versuchen Sie, dd ($ product) und dd ($ product-> pivot). Gibt einer von ihnen null zurück? Wenn ja, beginnt Ihr Problem dort. – Jed

+0

versuchen Sie '' 'dd ($ product-> retailers);' '' –

+0

Können wir sehen, wie Ihr Produktmodell aussieht? –

Antwort

0

Wenn Sie auf Product::find(296) zugreifen, greifen Sie nicht über ein zugehöriges Modell zu, Sie greifen auf das Produktmodell selbst zu, daher hätte Laravel/Eloquent keine Beziehungsinformationen wie die Pivot-Felder geladen, da diese Pivot-Felder nicht vorhanden sind Diese sind für das Produktmodell definiert und für die Beziehung definiert.

Wenn Sie tun sollten:

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

Dann die Beziehung Produkte zugreifen zu diesem Modell, sollte es funktionieren:

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

Zusammengefasst Produkte selbst haben keine Pivot-Felder. Die Pivot-Felder sind für die Beziehung der Produkte und Händler.

Verwandte Themen