Laravel查询工作中途

时间:2018-03-10 16:45:00

标签: php laravel

我有这个查询

$categories = Category::with('products')
            ->OfListed() // this is my scope has nothing to do with my issues.
            ->orderby('id', 'desc')
            ->take(10)
            ->get();

它的工作方式中途!意思是:

  

我用他们的产品获取我的类别,但我没有按顺序获取它们   id 我得到了所有内容而不是最后10个

我如何在刀片中展示它们:

@foreach($categories as $kis)
  @foreach($kis->products as $ki)
    {{$ki->title}}
  @endforeach
@endforeach

任何想法?

2 个答案:

答案 0 :(得分:3)

如果您想要10个产品并订购

,请尝试此操作
$categories = Category::with([
   'products' => function($query){
       $query->orderby('id', 'desc');
    }
 ])->OfListed()->get();

在刀片中

@foreach($categories as $kis)
  @foreach($kis->products->take(10) as $ki)
    {{$ki->title}}
  @endforeach
@endforeach

编辑答案为O.P.说它有效 请在文档https://laravel.com/docs/5.6/eloquent-relationships#constraining-eager-loads

中查看

答案 1 :(得分:0)

如果您尝试

@foreach($categories as $i => $kis)
  <div>Category {{{ $i }}}</div>
  @foreach($kis->products as $ki)
    {{$ki->title}}
  @endforeach
@endforeach

您将看到您只获得10个类别。由于您的循环仅显示产品的标题,因此您无法查看获得的类别数量。看看你检索产品的方法 - 它可能选择的不仅仅是预期的。