【问题标题】:Laravel: How to use orderBy in Form?Laravel:如何在表单中使用 orderBy?
【发布时间】:2020-05-14 18:17:52
【问题描述】:

我是 laravel 的新手,正在努力填充表单元素。

在数据库中,我想选择具有最新 ID 或最新 created_by 值的行,但 orderBy 方法似乎根本不起作用。

我的代码在视图中:

@php($deliveryNote = \App\DeliveryNote::where('order_id', $order->id)->orderBy('id', 'desc')->first())

因此,查询中是否存在 orderBy 无关紧要,它仍然会打印 ID 最低的第一条记录。我也尝试过 ->latest() ,就像我在其他线程中发现的那样,但这只会打印一个错误。

【问题讨论】:

  • 试试last() 而不是latest()
  • 你不应该在视图中使用雄辩的查询
  • \App\DeliveryNote::where('order_id',$order_id)->latest('id')->first(); ?
  • Last 甚至 latest() 也不起作用。现在在这里尝试了所有解决方案。实际上我没有写这个网站,所以我只是从中学习 MVC 模式。所以有人在刀片中写了 equolent,现在我知道这不是一个好习惯。
  • 实际上我通过删除旧行解决了这个问题。所以在任何时候提出请求时都只有 1 行可用。不是一个理想的解决方案,但它现在可以工作。

标签: laravel


【解决方案1】:
  • 永远不要在刀片(视图)中使用 eloquent 查询。它完全错误,你应该遵循 mvc 结构。
  • 您应该从控制器发送此数据。

【讨论】:

    【解决方案2】:

    永远不要在刀片文件中使用雄辩的查询。完全错误。

    你应该遵循 mvc 结构并尝试 latest() 函数。

    $deliveryNote = \App\DeliveryNote::where('order_id', $order->id)->latest()->first();
    

    【讨论】:

      【解决方案3】:

      如果您想检索表格的最后行,试试这个

      $last_row = Model::orderBy('id', 'desc')->first();
      

      这将让您以 DESCENDING 顺序排列您的数据库表,然后 ->first() 方法获取您的第一个(根据顺序颠倒)

      【讨论】:

      • @LubWn 试试这个
      • 我试过了,但是没有用。我喜欢:$deliveryNote = \App\DeliveryNote::orderBy('id', 'desc')->where('order_id', $order->id)->first() 仍然检索错误的行。不知道我应该在哪里看。我认为问题是,这是 Order 的刀片视图,所以也许 orderBy 尝试订购 Orders 而不是 DeliveryNotes?
      【解决方案4】:
      @foreach ($institutes->sortBy('order') as $institute)
      
      @endforeach
      

      【讨论】:

      【解决方案5】:
      @php
      //codes here
      @endphp
      

      这个 laravel 的指令只适用于普通 PHP,所以我认为你不能在其中执行 Eloquent 关系。

      试试这个:

      {{ $deliveryNote = \App\DeliveryNote::where('order_id', $order->id)->orderBy('id', 'desc')->first() }}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-08
        • 1970-01-01
        • 2018-07-06
        • 1970-01-01
        • 1970-01-01
        • 2019-04-25
        • 1970-01-01
        相关资源
        最近更新 更多