如何使用 Laravel 获取带有 where 子句的 table 中的最后一条记录?
How do I get the last record in a table with a where clause using Laravel?
我正在创建数据库通知。我有 2 个通知 类:
InterviewRequestReceived.php:
$user = Auth::user();
$interviewRequestReceived = InterviewRequestsReceived::latest()->where('user_id', $user->id)->get();
return [
'date_time1' => $interviewRequestReceived[$interviewRequestReceived->count() - 1]->latest()->get('date_time1'),
'date_time2' => $interviewRequestReceived[$interviewRequestReceived->count() - 1]->latest()->get('date_time2')
];
和InterviewRequestSent.php:
public function toDatabase($notifiable)
{
$user = Auth::user();
$interviewRequestSent = InterviewRequestsSent::latest()->where('user_id', $user->id)->get();
return [
'date_time1' => $interviewRequestSent[$interviewRequestSent->count() - 1]->latest()->get('date_time1'),
'date_time2' => $interviewRequestSent[$interviewRequestSent->count() - 1]->latest()->get('date_time2')
];
}
我有 3 个 table。 interview_requests_receiveds、interview_requests_sents 和我创建了通知 table 并迁移了。
在我的表格上,我有 2 个日期时间字段选项,因此雇主可以选择 2 个可能的日期和时间,以便他们面试候选人。
我的表格正在工作。
我的通知正常工作,只是它插入了所有登录用户的日期和时间,而不仅仅是最后插入的记录。
我正在尝试使用 latest(),但它不起作用。
根据 Laravel 文档
The latest
and oldest
methods allow you to easily order results
by date. By default, result will be ordered by the created_at
column. Or, you may pass the column name that you wish to sort by
如果你想使用最新的而不是 get()
使用 first()
函数:
如果您的 table 中已有 created_at
列,则
$interviewRequestSent = InterviewRequestsSent::latest()->where('user_id', $user->id)->first();
或
假设您想根据 id
列获取最后一条记录
$interviewRequestSent = InterviewRequestsSent::latest('id')->where('user_id', $user->id)->first();
或者您可以使用以下任何方法获取最后一条记录
InterviewRequestsSent::where('user_id', $user->id)->last();
或
InterviewRequestsSent::where('user_id', $user->id)->orderBy('id', 'desc')->first();`
参考:
我正在创建数据库通知。我有 2 个通知 类: InterviewRequestReceived.php:
$user = Auth::user();
$interviewRequestReceived = InterviewRequestsReceived::latest()->where('user_id', $user->id)->get();
return [
'date_time1' => $interviewRequestReceived[$interviewRequestReceived->count() - 1]->latest()->get('date_time1'),
'date_time2' => $interviewRequestReceived[$interviewRequestReceived->count() - 1]->latest()->get('date_time2')
];
和InterviewRequestSent.php:
public function toDatabase($notifiable)
{
$user = Auth::user();
$interviewRequestSent = InterviewRequestsSent::latest()->where('user_id', $user->id)->get();
return [
'date_time1' => $interviewRequestSent[$interviewRequestSent->count() - 1]->latest()->get('date_time1'),
'date_time2' => $interviewRequestSent[$interviewRequestSent->count() - 1]->latest()->get('date_time2')
];
}
我有 3 个 table。 interview_requests_receiveds、interview_requests_sents 和我创建了通知 table 并迁移了。 在我的表格上,我有 2 个日期时间字段选项,因此雇主可以选择 2 个可能的日期和时间,以便他们面试候选人。 我的表格正在工作。 我的通知正常工作,只是它插入了所有登录用户的日期和时间,而不仅仅是最后插入的记录。
我正在尝试使用 latest(),但它不起作用。
根据 Laravel 文档
The
latest
andoldest
methods allow you to easily order results by date. By default, result will be ordered by thecreated_at
column. Or, you may pass the column name that you wish to sort by
如果你想使用最新的而不是 get()
使用 first()
函数:
如果您的 table 中已有 created_at
列,则
$interviewRequestSent = InterviewRequestsSent::latest()->where('user_id', $user->id)->first();
或
假设您想根据 id
列获取最后一条记录
$interviewRequestSent = InterviewRequestsSent::latest('id')->where('user_id', $user->id)->first();
或者您可以使用以下任何方法获取最后一条记录
InterviewRequestsSent::where('user_id', $user->id)->last();
或
InterviewRequestsSent::where('user_id', $user->id)->orderBy('id', 'desc')->first();`
参考: