laravel 正在获取集合的最后一个元素

7d7tgy0s  于 2023-01-10  发布在  其他
关注(0)|答案(4)|浏览(200)

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

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

下面是我的代码

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

请告诉我我做错了什么。谢谢
另外,我正在使用Laravel 5.0

llew8vvj

llew8vvj1#

你可以这样说:

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

pvabu6sv2#

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

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

否则,您需要获取所有项,因为last()是集合类的一部分,所以它希望集合或数组能够工作,而不是查询构建器。只为一个项获取所有数据效率较低,也是一种不好的做法。

arknldoa

arknldoa3#

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

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

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

rjee0c15

rjee0c154#

试试这个,代码更少:

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

相关问题