【问题标题】:Laravel Eloquent how to get the second or third record?Laravel Eloquent 如何获得第二或第三条记录?
【发布时间】:2015-08-13 14:39:12
【问题描述】:

我有一个订单和一个产品模型。
"Order" HasMany 产品(和产品属于订单)...

假设我想展示我订单的 3 件产品,该怎么做?
我知道第一个可以像$order->products->first() 一样被检索...但是如何检索第二个和第三个产品?

我试过$order->products->find(1),但“1”代表产品的ID...我不想知道...

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    你可以试试这个:

    $order->products->take(3)->get();
    

    【讨论】:

    • 比如我需要产品名称,我试过 $order->products->take(3)->get('name'); (我得到一个空结果),然后我尝试了 $order->products->take(3)->get()->name; (我收到一个错误“缺少参数”)
    • 试试这个$order->products->take(3)->select('name')->get()
    • 仍然不起作用:“调用未定义的方法 Illuminate\Database\Eloquent\Collection::select()”
    • 也许可以试试 $order->products()->take(3)->get();
    【解决方案2】:

    我终于找到了解决办法,这是正确的语法:

     $order->products->get(0)->name;   will return the first record
     $order->products->get(1)->name;   will return the second record
     $order->products->get(2)->name;   will return the third record 
    

    等等……

    【讨论】:

      【解决方案3】:
      $order->products()->skip(1)->first();//Second row
      $order->products()->skip(2)->first();//Third row
      ....
      

      比加载所有产品并只获取第一、第二、ecc..


      如果你想要第二个和第三个,你可以在一个查询中只获取它们而不加载其他行,使用类似的方法:

      $order->products()->skip(1)->take(2)->get(); //Skip first, take second and third
      

      【讨论】:

        【解决方案4】:

        假设您想要来自Eloquent Collection 的第二个产品

        如果您确定数组键与数组索引相同,请执行此操作

        $order->products->get(1)->name;
        

        如果您需要第二个项目并且您不确定数组键,请执行此操作

        $order->products->slice(1, 1)->first()->name;
        

        【讨论】:

          【解决方案5】:
          $order->products()->skip(1)->take(1)->first(); //Second row
          $order->products()->skip(2)->take(1)->first(); //Third row
          
          $order->products()->orderBy('salary','desc')->skip(1)->take(1)->first(); //Second highest salary row
          $order->products()->orderBy('salary','desc')->skip(2)->take(1)->first(); //Third highest salary row
          

          【讨论】:

            猜你喜欢
            • 2022-01-14
            • 1970-01-01
            • 2021-11-05
            • 2021-12-12
            • 1970-01-01
            • 2022-11-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多