如何使用 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();`

参考:

Laravel -> Query Builder -> latest method