我的数据库中有以下表结构:
当我在$this->format->product;
课程中尝试ProductPrice
时,我收到错误:
LogicException:App \ ProductPrice :: product必须返回一个关系实例。
当我在我的函数中执行dd
时:
dd($this->format()->first()->product);
我得到了该产品的实例。但是,删除dd
仍然会抛出异常。
为什么我得到LogicException?
class ProductPrice extends Model
{
public function format()
{
return $this->belongsTo(ProductFormat::class, 'product_format_id');
}
public function product()
{
return $this->format->product;
}
}
class ProductFormat extends Model
{
public function product()
{
return $this->belongsTo(Product::class);
}
}
dd($this->format);
的结果会返回ProductFormat
的实例。
答案 0 :(得分:1)
调查后,HasAttributes::getRelationshipFromMethod()
,我已经注意到,如果该属性不在类的properties
属性存在,它会尝试检索的关系,因此错误。
要解决这个问题,我必须在课堂上添加以下内容:
protected $attributes = ['product'];
否则,我可以将product
称为函数而不是属性:
$price->product();