获取Collection的最后一个元素

时间:2016-10-14 11:22:27

标签: laravel laravel-5 eloquent

伙计们,我正在尝试将数据中的最后一个元素返回给我,但问题是它给我一个错误,这是

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

这是我的代码

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

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

P.S我正在使用Laravel 5.0

4 个答案:

答案 0 :(得分:4)

最后一次方法调用无效,因为namespace Illuminate\Database\Eloquent;没有任何last()方法。正确的方法是做这样的事情:

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

另外,你需要获取所有项目,因为last()是集合类的一部分,所以它希望集合或数组能够工作而不是查询构建器,但是获取它是没有意义的所有数据仅供一个人使用。

答案 1 :(得分:1)

尝试类似的东西:

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

试试这个,更少的代码:

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