我有这个查询
$user->orders->where('service_id',$request->service_id)->first();
Run Code Online (Sandbox Code Playgroud)
我需要获取最后一个元素,我该怎么做?
没有created_at专栏所以我不能使用latest()
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(). 这为您提供了更多的可读性和可维护性。
$user->orders()->where('service_id', $request->service_id)->orderBy('id', 'DESC')->first();
Run Code Online (Sandbox Code Playgroud)