Laravel бесконечное предыдущее и следующее на модели - PullRequest
0 голосов
/ 06 февраля 2020

Как создать бесконечную предыдущую и следующую «модель» с помощью laravel

Я сделал запрос для доступа к предыдущим и следующим задачам и хотел бы поделиться им.

Я бы хотел Любите отзывы, чтобы получить лучший запрос, хотя

$taskSlug = $request->only('task'); // your request

$task = Task::where('slug', $taskSlug)->first(); // the requested task

$previous = Task::where('id', '<', $task->id)->exists() ? Task::where('id', '<', $task->id)->orderBy('id', 'desc')->first() : Task::where('id', '!=', $task->id)->orderBy('id', 'desc')->first(); // previous task

$next = Task::where('id', '>', $task->id)->exists() ? Task::where('id', '>', $task->id)->orderBy('id')->first() : Task::where('id', '<', $task->id)->orderBy('id', 'asc')->first(); // next task

return response()->json([$task, $previous, $next], 200); // ajax response

Если у кого-то есть лучший и менее обширный запрос, пожалуйста, дайте мне знать

1 Ответ

2 голосов
/ 06 февраля 2020

Я считаю, что вы хотите сделать что-то вроде этого:

$task = Task::where('slug', $taskSlug)->first();
$previous_id = Task::where('id', '<', $task->id)->max('id');
$next_id = Task::where('id', '>', $task->id)->min('id');

Вы получаете максимальный идентификатор в диапазоне [от первой записи к идентификатору задачи], чтобы получить предыдущее задание.
Вы получаете минимальный идентификатор в диапазоне [идентификатор задачи до последней записи], чтобы получить следующую задачу.

Тогда вы можете сделать:

$previous = Task::find($previous_id);
$next = Task::find($next_id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...