如何从Laravel中的Categories-> Sources->新闻结构中仅获取活动项目?

时间:2017-10-04 05:49:34

标签: php sql laravel orm eloquent

这是一个相当简单的要求,但我不确定如何以Laravel的方式做到这一点。我有一个简单的类别,项目来源和项目结构,我只需要获取活动项目。

  • 类别,例如。科技,科学,娱乐
  • 来源(每个来源属于一个类别),例如。 Engadget,Popular Science,Billboard
  • 来自每个来源的
  • 新闻项目。

以上所有项目均可设置为有效或无效。如果'Tech'设置为非活动状态,我将只从其他类别来源获取新闻项目,例如。科普和广告牌。

自定义查询会执行此操作,但我想知道是否有更有说服力的[原文如此]的方法。

1 个答案:

答案 0 :(得分:0)

类别模型可以具有有很多来源的功能,我们称之为来源()。 来源模型的功能应该是有很多新闻:功能新闻()。 然后你可以这样做:

$news=App\Category::find($categoryID)->sources()->get()->news()->where('active',1)->get();

如果您只想从活跃来源获取新闻:

$news=App\Category::find($categoryID)->sources()->where('active',1)->get()->news()->where('active',1)->get();

您也可以在类别模型中进行自定义功能,如:

public function activeSources(){
    return App\Source::where('category_id',$this->id)->where('active',1)->get();
}

然后得到这样的消息:

$news=App\Category::find($categoryID)->activeSources()->news()->get();