繁体   English   中英

在Laravel中检索数据透视表的列值

[英]Retrieve Pivot table column value in 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');

}

我只是看不到哪里出了问题?

当您访问Product::find(296)您没有通过相关模型进行访问,而是在访问Product模型本身,因此Laravel / Eloquent不会加载任何关系信息,例如枢轴字段,因为这些枢轴字段不是没有为产品模型定义,而是为关系定义的。

如果要这样做:

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

然后访问该模型上的“产品”关系,它应该可以工作:

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

总之,产品本身没有任何枢轴字段。 关键字段用于产品零售商之间的关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM