首页 > 解决方案 > laravel - 获取最后一条记录

问题描述

我有这个查询

$user->orders->where('service_id',$request->service_id)->first();

我需要得到最后一个元素,我该怎么做?

没有created_at专栏所以我不能使用latest()

标签: databaselaravel

解决方案


latest()再次尝试方法并给他们一个参数。

$user->orders()
    ->where('service_id', $request->service_id)
    ->latest('id')
    ->first();

Eloquent的latest()方法:

/**
 * Add an "order by" clause for a timestamp to the query.
 *
 * @param  string  $column
 * @return $this
 */
public function latest($column = null)
{
    if (is_null($column)) {
        $column = $this->model->getCreatedAtColumn() ?? 'created_at';
    }

    $this->query->latest($column);

    return $this;
}

此方法在内部使用created_at,但接受您想要的特定列。我建议使用这种方法而不是->orderBy()->frist(). 这为您提供了更多的可读性和可维护性。


推荐阅读