如何使用 Laravel 获取带有 where 子句的表中的最后一条记录?

我正在创建数据库通知。我有 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 张桌子。interview_requests_receiveds、interview_requests_sents 和我创建了通知表并进行了迁移。在我的表格上,我有 2 个日期时间字段选项,因此雇主可以选择 2 个可能的日期和时间来面试候选人。我的表格正在工作。我的通知正在工作,只是它插入了所有登录用户的日期和时间,而不仅仅是最后插入的记录。


我正在尝试使用 latest(),但它不起作用。


人到中年有点甜
浏览 99回答 1
1回答

慕哥6287543

根据 Laravel 文档和方法允许您轻松地latest按日期排序结果。默认情况下,结果将按 列排序。或者,您可以传递您希望排序的列名oldestcreated_at如果你想使用 latest then 而不是get()使用first()函数:如果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 -> 查询生成器 -> 最新方法
打开App,查看更多内容
随时随地看视频慕课网APP