我创建了一个这样的范围函数:
scopeSearch($query, $input)
{
$query->orWhere('title' , 'LIKE' , '%' . $input['q'] . '%')
retrun $query;
}
top函数返回articles
表中的结果列表。
文章表格结构:
id | title | parent_id
1 title1 null
2 title2 1
3 title3 null
我想要返回他们没有任何子节点的所有记录,而parent_id为null!
例如在顶部示例中我只想要返回第三条记录(id = 3)。
我知道我必须尝试这样的事情(我之前在文章模型中定义了文章())
$query->whereHas('articles' , function ($query) use ($id){$query->where('parent_id' , $id );})
但我不知道如何才能让$id
插入热门代码以返回正确的结果。
修改
public function articles()
{
return $this->hasMany(Article::class , 'parent_id' , 'id');
}
答案 0 :(得分:2)
public function childArticles()
{
return $this->belongsTo(Article::class , 'parent_id' , 'id');
}
也与子文章建立关系。
$query->doesnthave('articles','childArticles')->get();
希望这有帮助。