【问题标题】:Getting last element of the Collection获取集合的最后一个元素
【发布时间】:2016-10-14 11:22:27
【问题描述】:

伙计们,我正在尝试从返回给我的数据中获取最后一个元素,但问题是它向我抛出了一个错误,即

Call to undefined method Illuminate\Database\Query\Builder::last()

这是我的代码

$last_saved_snapshot = \EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id)->last();

请告诉我我做错了什么。谢谢

PS 我使用的是 Laravel 5.0

【问题讨论】:

    标签: laravel laravel-5 eloquent


    【解决方案1】:

    试试这样的:

    $last_saved_snapshot = \EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id)
        ->get()
        ->last();
    

    【讨论】:

    • 同一个调用未定义的方法
    • 同班 (Illuminate\Database\Query\Builder)?
    • 是的,同一个类 Illuminate\Database\Query\Builder
    • 所以你做错了,在我的电脑上->get() 不要返回Illuminate\Database\Query\Builder,而是Illuminate\Database\Eloquent\Collection。您需要在->last() 之前运行->get()。您可以粘贴此命令的输出吗? echo get_class(\EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id));echo get_class(\EnginePerformanceTestSnapshot::get());
    • 这就是我运行它的方式->get before->last,我肯定会给你输出。现在我一到家就在外面,我会粘贴输出
    【解决方案2】:

    最后一个方法调用不起作用,因为namespace Illuminate\Database\Eloquent; 没有任何last() 方法。正确的做法是这样做:

    $last_saved_snapshot = EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id)
                                                          ->orderBy('id', 'desc')
                                                          ->first();
    

    否则,您需要获取所有项目,因为last() 是集合类的一部分,因此它期望集合或数组能够工作而不是查询构建器,但是获取所有数据没有意义只为一个。

    【讨论】:

      【解决方案3】:

      我找到了另一种方法,那就是:

      $last_saved_snapshot = \EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id)->orderBy('id', 'desc')->first();
      

      这是有效的,但如果有人能告诉我为什么最后一个不起作用,那将是一个很大的帮助。谢谢

      【讨论】:

        【解决方案4】:

        试试这个,代码更少:

        \EnginePerformanceTestSnapshot::
            where('engine_performance_test_id', $id)
            ->latest()
            ->first();
        

        【讨论】:

          猜你喜欢
          • 2012-01-11
          • 2015-12-07
          • 2011-03-28
          • 2011-04-29
          • 2012-04-02
          • 2010-11-30
          • 1970-01-01
          • 1970-01-01
          • 2014-10-23
          相关资源
          最近更新 更多