Добавление пагинации во вложенный массив Laravel 10Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Добавление пагинации во вложенный массив Laravel 10

Сообщение Anonymous »

Итак, я создаю приложение для чата 1-1, используя laravel для интерфейса Api и response.js
Эта функция находит все сообщения, используя идентификатор получателя и идентификатор пользователя для аутентификации
и затем группирует сообщения (данные) по дням
& затем он переворачивает массив, потому что во внешнем интерфейсе мне нужно отображать сообщения снизу вверх
Мой код< /p>

Код: Выделить всё

    public function getMessages(Request $request)
{
$validatedData = Validator::make($request->all(), [
"receiver_id" => "required",
]);

if ($validatedData->fails()) {
return $this->sendresponse('false', 'validation error', $validatedData->errors());
}

$user_id = Auth::user()->id;
$receiver_user = AppUser::where('id', $request->receiver_id)->selectbasic()->withCount('followers')->first();
$receiver_id = $request->receiver_id;

$messages = Message::where(function ($query) use ($user_id, $receiver_id) {
$query->where('sender_id', $user_id)
->where('receiver_id', $receiver_id);
})->orWhere(function ($query) use ($user_id, $receiver_id) {
$query->where('sender_id', $receiver_id)
->where('receiver_id', $user_id);
})->orderBy('created_at', 'asc')->get();

// Group messages by day names and reverse the messages within each group
$groupedMessages = $messages->groupBy(function ($message) {
return $message->created_at->format('l'); // 'l' format returns the full day name
})->map(function ($messagesByDay) use ($user_id) {
return $messagesByDay->reverse()->values()->map(function ($message) use ($user_id) {
$message->sent = $message->sender_id == $user_id ? 1 : 0;
$message->received = $message->receiver_id == $user_id ? 1 : 0;
return $message;
});
});

// Reverse the order of day groups
$groupedMessages = $groupedMessages->reverse();

return $this->sendresponse('true', 'found', ['messages' => $groupedMessages, 'receiver' =>  $receiver_user]);
}
Текущий ответ API

Код: Выделить всё

{
"type": "true",
"message": "found",
"data": {
"messages": {
"Friday": [
{
"id": 39,
"sender_id": 1,
"receiver_id": 2,
"content": "helo new msg",
"created_at": "2024-03-15T06:49:57.000000Z",
"updated_at": "2024-03-15T06:49:57.000000Z",
"sent": 0,
"received": 1,
"time": "06:49 AM"
},
{
"id": 38,
"sender_id": 2,
"receiver_id": 1,
"content": "helo new msg",
"created_at": "2024-03-15T06:49:35.000000Z",
"updated_at": "2024-03-15T06:49:35.000000Z",
"sent": 1,
"received": 0,
"time": "06:49 AM"
}
],
"Wednesday": [
{
"id": 37,
"sender_id": 2,
"receiver_id": 1,
"content": "helo new msg",
"created_at": "2024-03-13T14:54:47.000000Z",
"updated_at": "2024-03-13T14:54:47.000000Z",
"sent": 1,
"received": 0,
"time": "02:54 PM"
},
...
{
"id": 14,
"sender_id": 2,
"receiver_id": 1,
"content": "helo new msg",
"created_at": "2024-03-13T10:28:23.000000Z",
"updated_at": "2024-03-13T10:28:23.000000Z",
"sent": 1,
"received": 0,
"time": "10:28 AM"
}
],
"Sunday": [
{
"id": 13,
"sender_id": 2,
"receiver_id": 1,
"content": "heiik",
"created_at": "2024-03-10T13:17:58.000000Z",
"updated_at": "2024-03-10T13:17:58.000000Z",
"sent": 1,
"received": 0,
"time": "01:17 PM"
},
...
{
"id": 1,
"sender_id": 2,
"receiver_id": 1,
"content": "hello",
"created_at": "2024-03-10T07:27:10.000000Z",
"updated_at": "2024-03-10T07:27:10.000000Z",
"sent": 1,
"received": 0,
"time": "07:27 AM"
}
]
},
"receiver": {
"name": "XYZ",
"profile": "xyz.png",
"id": 1,
"about": null,
"user_name": "user",
"created_at": "March 2024",
"followers_count": 0
}
}
}
Я пробовал использовать ChatGpt, но мне не помогло


Подробнее здесь: https://stackoverflow.com/questions/781 ... laravel-10
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»