我有一个名为回复的表格,其中包含论坛laravel应用程序中某个主题的所有回复。
**replies Table**
---------------
reply_id
content
topic_id
reply_by
embed_reply
created_at
updated_at
回复可以有另一个回复Herself。因为 embed_reply 列包含 reply_id 包含的回复。
现在我想要包含回复的详细信息将存在于关于提取的父回复中。
为此我添加此方法来回复模型:
public function included_reply ()
{
return $this->with('replies', function ($query) {
$query->where('reply_id',$this->embed_reply);
});
}
为了获取特定主题的回复,我写了这个:
$topic = Topic::whereTopicId($id)
->with([
'replies' => function ($query) {
$query->orderBy('created_at', 'desc');
}
, 'replies.included_reply'
])
->first();
所有这些回报都低于错误:
BadMethodCallException in Builder.php line 2071:
Call to undefined method Illuminate\Database\Query\Builder::replies()
我不知道该怎么做。 什么是解决方案?
答案 0 :(得分:0)
我得到了答案:
这是我必须添加的关系:
public function embed()
{
return $this->belongsTo(Reply::class, 'embed_reply');
}
这用于获取:
$reply = Reply::find($reply_id);
$embed = $reply->embed;