Laravel当前来自查询结果的id

问题描述 投票:2回答:1

我创建一个这样的范围函数:

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');
}
laravel laravel-5.5 laravel-eloquent laravel-query-builder
1个回答
2
投票
public function childArticles()
{
    return $this->belongsTo(Article::class , 'parent_id' , 'id');
}

与儿童文章建立关系。

$query->doesnthave('articles','childArticles')->get();

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.