这是我的关系:
//In Category Model
public function articles(){
return $this->hasMany('App\Article');
}
//In Article model
public function category(){
return $this->belongsTo('App\Category');
}
最后是我的控制器:
$latest = Category::with('articles')->whereHas('articles', function ($q){
$q->where('lang', '=', '1')->where('approved', '=', '1')->latest();
})->get();
这似乎可行,但是whereHas
无效。 编辑:where
中的whereHas
子句不起作用。而且,如果我删除了with('articles')
,该关系将无法正常工作。基本上,我想做的是从类别的集合中获取最新的文章并显示在刀片视图中。
还有一个问题,我将它放在这里。在我的刀片中,我正在遍历上面提到的这些类别。在这些循环中,我正在打开另一个循环以显示文章。像这样:
@foreach($latest as $recent)
//Name of category
{{$recent->name}}
@foreach($recent->articles as $articles)
//Name of articles
{{$articles->name}}
@endforeach
@endforeach
这是我想要实现的目标。我对某一篇文章有一个大横幅,对其他4种文章有另外4个横幅。所以我可以拆分1篇文章,并在foreach中使用其余4篇文章?
例如:
//Same as above but different
@foreach($latest as $recent)
//Name of category
{{$recent->name}}
@foreach($recent->articles as $articles)
//Name of articles
//This is the first banner which will contain only one article
<div class="banner_one">
{{$articles->name}}
</div>
//Here i want to be able to take the rest of the 4 articles from the collection
<div class="four_other_banners">
{{$articles->name}}
</div>
@endforeach
@endforeach
请注意,我这样做是因为我使用了2种类型的cols。大横幅广告使用col-md-6
,其他4个横幅广告使用col-sm-6
。
那我有什么选择?为什么我的关系查询无法按预期工作?