Laravel当前来自查询结果的id

时间:2018-01-04 20:23:04

标签: laravel laravel-5.5 laravel-eloquent laravel-query-builder

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

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');
}

1 个答案:

答案 0 :(得分:2)

public function childArticles()
{
    return $this->belongsTo(Article::class , 'parent_id' , 'id');
}

也与子文章建立关系。

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

希望这有帮助。