我的模特评论有:
public function shop()
{
return $this->belongsTo(Shop::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
public function parent()
{
return $this->belongsTo(static::class, 'id', 'parent_id');
}
public function isParent()
{
return !$this->parent_id;
}
public function children()
{
return $this->hasMany(static::class, 'parent_id');
}
public function sendReviewNotification()
{
if ($this->isParent()) {
$this->shop->owner->sendReviewParentNotification($this);
} else {
if ($this->user->is($this->parent->user)) {
$this->shop->owner->sendReviewCommentNotification($this);
} else {
$this->parent->user->sendReviewCommentNotification($this);
}
}
}
在子注释中添加子注释时,出现错误:“试图获取非对象的属性”用户”,在ReviewObserver
中,我这样调用sendReviewNotification:
public function created(Review $review)
{
$review->sendReviewNotification();
}
当我添加父模块时。比所有方法都有效,但是当我添加一个子注释时,会出现此错误。为什么parent
关系不起作用?
答案 0 :(得分:0)
您应该将外键作为第二个参数而不是id:
public function parent()
{
return $this->belongsTo(Parent::class, 'parent_id');
}
文档:
口才通过检查关系方法的名称并在方法名称后加上_id来确定默认的外键名称。 您可以将自定义键名称作为第二个参数传递给belongsTo方法
有关更多信息:click here