Группировка ответов ресурсов Laravel API

UPD: Решено. Я думаю (проверьте ниже)

Я пытаюсь сгруппировать свой ответ API по определенному столбцу с помощью ресурсов Laravel.

Нравится

{
   "data":{
      "1":[ <=== (!!) To have this groups
         {
            "id":63,
            "eve_id":95924195,
            "name":"John",
            "group":1, <== (!!!) from this column
            "is_active":1,
            "is_editable":1,
            "created_at":"2018-11-08 05:26:20",
            "updated_at":"2018-11-08 05:26:20"
         },
         {
            "id":64,
            "eve_id":95824961,
            "name":"Doe",
            "group":1,
            "is_active":1,
            "is_editable":1,
            "created_at":"2018-11-08 05:41:10",
            "updated_at":"2018-11-08 05:41:10"
         }
      ]
   }
}

Мой экземпляр ресурса

    class SomeResource extends JsonResource
{
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'name' => $this->name,
            'group' => $this->group,
            'is_active' => $this->is_active,
            'is_editable' => $this->is_editable,
            'created_at' => (string) $this->created_at,
        ];
    }
}

мой экземпляр коллекции:

    class SomeCollection extends ResourceCollection
{
    public $collects = 'App\Http\Resources\SomeResource';


    public function toArray($request)
    {
        return [
            'data' => $this->collection,
        ];
    }
}

Использование основного красноречивого метода

Some::where('is_active', '1')->get()->groupBy('group');
return ['entries' => $entries];

не могу решить проблему, по крайней мере, если я каким-то образом могу передать эти записи и повторить их в ResourceCollection

Спасибо.

UPD: Хорошо, проблема была решена путем создания нового экземпляра ресурса SomeGroupCollection и группировка производилась с помощью основного красноречивого метода

    $entries = Some::where('is_active', '1')->get()->groupBy('group');
    return new SomeGroupCollection($entries);

SomeGroupCollection

class SomeGroupCollection extends ResourceCollection
{

    public $collects = 'App\Http\Resources\SomeCollection';

    public function toArray($request)
    {
        return [
            'entries' => $this->collection
        ];
    }
}

SomeCollection

class SomeCollection extends ResourceCollection
{

    public $collects = 'App\Http\Resources\SomeResource';


    public function toArray($request)
    { 
        return [
             $this->collection,
        ];
    }
}

SomeResource

class SomeResource extends JsonResource
{

    public function toArray($request)
    {

        return [
            'id' => $this->id,
            'name' => $this->name,
            'group' => $this->group,
            'is_active' => $this->is_active,
            'is_editable' => $this->is_editable,
            'created_at' => (string) $this->created_at,
        ];
    }
}

ответ, который вы показываете для достижения в «Like this Code», не является правильным ответом json, вы можете попробовать с помощью return response () -> json (['statusCode' => '1', 'statusMessage' => 'ваше сообщение ',' Результат '=> $ переменная]);

ahmad izhar 08.11.2018 07:24

я не это спрашиваю

John Doe 08.11.2018 08:19

уточните свой вопрос, пожалуйста?

ahmad izhar 08.11.2018 09:22

Мне нужно группа по мой ресурсный ответ по определенному столбцу.

John Doe 08.11.2018 09:36

пожалуйста, попробуйте с помощью -> group By ('table Name.attribute', 'as'); если он работает хорошо, в противном случае попробуйте с помощью DB :: raw query

ahmad izhar 08.11.2018 13:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
5
2 338
1

Ответы 1

Это сработало для меня в Laravel 8, но я подозреваю, что это будет работать так же в предыдущих версиях.

SomeResource::collection($models)->groupBy('group');

но без ключа data.

Другие вопросы по теме