Переопределить данные результатов красноречивых отношений

Я использую пакет Laravel-Metable в своем проекте. Этот пакет возвращает объект коллекции, используя имя ключа meta и объект значения eloquent.

Здесь вы можете увидеть скриншот результата данных пакета.

Как я могу переопределить данные результата и получить этот тип данных массива:

$meta = [
    [
        'id' => 1,
        'key' => "Meta Name",
        'value' => "Meta Value"

    ],

    [
        'id' => 2,
        'key' => "Meta Name",
        'value' => "Meta Value"

    ],
];

Я загружу метаданные своих моделей с ленивой загрузкой:

use Metable;

protected $with = ['meta'];
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
0
86
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для этого вы можете использовать метод коллекции карта, поэтому он должен быть примерно таким:

$result = $metaItems->map(function($meta) {
    return [
        'id' => $meta->id,
        'key' => $meta->key,
        'value' => $meta->value
    ];
})->values();

// then $result->toArray(); should give you the expected result

Я использовал скриншот, который вы предоставили в качестве результата $metaItems, и применил к нему код. Но вы можете добавить это в модель.

nakov 29.05.2019 08:25

Теперь ваш результат похож на это, но мне нужно результат без использования мета-имен в ключах родительского массива. Мне нужно заменить ключи на номера массива по умолчанию. @наков

Andreas Hunter 29.05.2019 08:35

@AndreasHunter подумайте о том, чтобы принять это, если это помогло :)

nakov 29.05.2019 08:39

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