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

时间:2020-03-13 01:45:06

标签: php mysql laravel notifications

我正在创建数据库通知。我有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张桌子。我创建了visits_requests_receiveds,interview_requests_sents,并创建了通知表并进行了迁移。 在我的表格上,日期时间字段有2个选项,因此雇主可以选择2种可能的日期和时间,这些日期和时间将对他们面试应聘者有用。 我的表格正在工作。 除了插入所有已登录用户的日期和时间,而不仅仅是最后插入的记录之外,我的通知仍然有效。

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

1 个答案:

答案 0 :(得分:1)

根据Laravel文档

通过latestoldest方法,您可以轻松地订购结果 按日期。默认情况下,结果将按created_at排序 柱。或者,您可以传递您希望使用的列名

如果要使用最新版本,请使用get()函数而不是first()

如果您的表中已经有created_at列,那么

$interviewRequestSent = InterviewRequestsSent::latest()->where('user_id', $user->id)->first();

OR

假设您要根据id列获取最新记录

 $interviewRequestSent = InterviewRequestsSent::latest('id')->where('user_id', $user->id)->first();

或者您可以使用以下任何一种方法来获取最后一条记录

InterviewRequestsSent::where('user_id', $user->id)->last();

OR

InterviewRequestsSent::where('user_id', $user->id)->orderBy('id', 'desc')->first();`

参考:

Laravel -> Query Builder -> latest method