Laravel关系(那里有)不起作用

时间:2018-07-15 10:33:17

标签: eloquent laravel-5.6

这是我的关系:

//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

那我有什么选择?为什么我的关系查询无法按预期工作?

0 个答案:

没有答案