连接枢轴有一个数组

时间:2019-06-05 14:02:12

标签: laravel laravel-5 eloquent

伙计们,我有2个关系表,列出所有消息时,显示了枢轴列关系,但我需要显示数据具有一个数组,有没有雄辩的方法可以做到这一点? >

我进行了搜索,但我无法通过收集方法进行操作,但是我想知道是否还有另一种方法。

我的模型查询是:

   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 :(得分:0)

您可以下一步:在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;
    }