我创建一个这样的范围函数:
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');
}
public function childArticles()
{
return $this->belongsTo(Article::class , 'parent_id' , 'id');
}
与儿童文章建立关系。
$query->doesnthave('articles','childArticles')->get();
希望这可以帮助。