Объединить сводный имеет один массив - PullRequest
0 голосов
/ 05 июня 2019

Ребята, у меня есть 2 таблицы отношений, и при перечислении всех моих сообщений показывается отношение столбцов сводки, но мне нужно показать, что у данных есть один массив, есть ли в eloquent какой-нибудь метод, позволяющий это сделать?

Я искал и я не могу манипулировать методами сбора, но мне интересно, есть ли другой способ.

Запрос моей модели:

   public function messages()
    {

        return $this->belongsToMany(Message::class,'message_users')->withPivot('is_read','sent_at');
    }

Вот как это:

{
    "data": [
        {
            "id": 4,
            "title": "test",
            "body": "<p>test</p>",
            "pivot": {
                "user_id": 1,
                "message_id": 4,
                "is_read": 0,
                "sent_at": "2019-06-05 12:59:11"
            }
        }
    ]
}

Вот как я хочу:

{
    "data": [
        {
            "id": 4,
            "title": "test",
            "body": "<p>test</p>",
            "user_id": 1,
            "message_id": 4,
            "is_read": 0,
            "sent_at": "2019-06-05 12:59:11"
        }
    ]
}

1 Ответ

0 голосов
/ 06 июня 2019

Вы можете сделать следующее: в User модель написать toArray() метод как

    /**
     * Convert the model instance to an array.
     *
     * @return array
     */
    public function toArray(): array
    {
        $attributes = $this->attributesToArray();
        $attributes = array_merge($attributes, $this->relationsToArray());

        // Detect if there is a pivot value and return that as the default value
        if (isset($attributes['pivot'] && isset($attributes['pivot']['user_id']))) {
            $attributes['user_id'] = $attributes['pivot']['user_id'];
            $attributes['message_id'] = $attributes['pivot']['message_id'];
            $attributes['is_read'] = $attributes['pivot']['is_read'];
            $attributes['sent_at'] = $attributes['pivot']['sent_at'];
            unset($attributes['pivot']);
        }

        return $attributes;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...