Как получить последнюю запись в таблице с предложением where, используя Laravel? - PullRequest
1 голос
/ 13 марта 2020

Я создаю уведомления базы данных. У меня есть 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 таблицы. survey_requests_receiveds, интервью_requests_sents и я создали таблицу уведомлений и мигрировали. В моей форме у меня есть 2 варианта полей даты и времени, поэтому работодатели могут выбрать 2 возможных даты и времени, которые подойдут для собеседования с кандидатом. Моя форма работает. Мои уведомления работают, за исключением того, что в него вставляются все зарегистрированные пользователи по дате и времени, а не только последняя вставленная запись.

Я пытаюсь использовать latest (), но это не работает.

1 Ответ

1 голос
/ 13 марта 2020

Согласно Laravel Документация

Методы latest и oldest позволяют легко упорядочить результаты по дате . По умолчанию результат будет упорядочен по столбцу created_at. Или вы можете передать имя столбца, которое вы sh, чтобы отсортировать по

Если вы хотите использовать последний, то вместо 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 -> Построитель запросов -> последний метод

...