php – 查询关系雄辩

我有新闻模特,新闻有很多评论,所以我在新闻模型中做到:

public function comments(){
    $this->hasMany('Comment', 'news_id');
}

但是我也在评论表中删除了字段,我只想选择不被删除的注释.所以垃圾<>所以我想知道有没有办法做这样的事情:

$news = News::find(123);
$news->comments->where('trashed', '<>', 1); //some sort of pseudo-code

有没有办法使用上面的方法,或者我应该写这样的东西:

$comments = Comment::where('trashed', '<>', 1)
    ->where('news_id', '=', $news->id)
    ->get();
最佳答案
任何这些都适合你,选择你最喜欢的一个:

渴望加载.

$comments = News::find(123)->with('comments', function ($query) {
    $query->where('trashed', '<>', 1);
});

>懒加载

$news = News::find(123);
$comments = $news->comments()->where('trashed', '<>', 1)->get();

我不禁要注意到,尽管如此,您可能想要做的是处理软删除,而Laravel内置功能可以帮助您:http://laravel.com/docs/eloquent#soft-deleting

转载注明原文:php – 查询关系雄辩 - 代码日志