获取集合的最后一个元素

Gar*_*ezi 0 laravel eloquent laravel-5

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

Call to undefined method Illuminate\Database\Query\Builder::last()
Run Code Online (Sandbox Code Playgroud)

这是我的代码

$last_saved_snapshot = \EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id)->last();
Run Code Online (Sandbox Code Playgroud)

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

PS我正在使用Laravel 5.0

Mar*_*iba 14

尝试这样的事情:

$last_saved_snapshot = \EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id)
    ->get()
    ->last();
Run Code Online (Sandbox Code Playgroud)


Gar*_*ezi 5

我找到了另一种方法来做到这一点,那就是:

$last_saved_snapshot = \EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id)->orderBy('id', 'desc')->first();
Run Code Online (Sandbox Code Playgroud)

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


jyc*_*753 5

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

$last_saved_snapshot = EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id)
                                                      ->orderBy('id', 'desc')
                                                      ->first();
Run Code Online (Sandbox Code Playgroud)

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