laravel - 获取最后一条记录

Mat*_*rix 4 database laravel

我有这个查询

$user->orders->where('service_id',$request->service_id)->first();
Run Code Online (Sandbox Code Playgroud)

我需要获取最后一个元素,我该怎么做?

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

Ben*_*nyi 9

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

$user->orders()
    ->where('service_id', $request->service_id)
    ->latest('id')
    ->first();
Run Code Online (Sandbox Code Playgroud)

雄辩的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;
}
Run Code Online (Sandbox Code Playgroud)

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


Was*_*ash 5

$user->orders()->where('service_id', $request->service_id)->orderBy('id', 'DESC')->first();
Run Code Online (Sandbox Code Playgroud)