Как получить следующие данные объекта в отношении красноречивого Ларавеля

#php #laravel #eloquent #eloquent-relationship

Вопрос:

У меня есть запрос, чтобы получить некоторые данные, которые выглядят так

 $query = Model::select('id', 'column')
            ->with(['relation1:column1,column1'])
            ->withCount(['relationcount1', 'relationcount2']);
            
$request->paginate == 'true' ? $data = $query->paginate($request->per_page) : $data = $query->get();
 

Образец результата:

 [
    {
        "id": 3,
        "column": "Blbalbala",
        "relationcount1": 52,
        "relationcount2": 8,
        "relation1": {
            "id": 8,
            "avatar_img": "images",
            "username": "username",
            "name": "fullname"
        }
    },
    {
        "id": 5,
        "column": "data2",
        "relationcount1": 0,
        "relationcount2": 3,
        "relation1": {
            "id": 8,
            "avatar_img": "images",
            "username": "username",
            "name": "fullname"
        }
    },
 

Я хочу создать другое отношение, в котором я смогу получить следующие данные из текущего элемента с помощью отношения laravel.

Мой ожидаемый результат:

 [
    {
        "id": 3,
        "column": "Blbalbala",
        "relationcount1": 52,
        "relationcount2": 8,
        "relation1": {
            "id": 8,
            "avatar_img": "images",
            "username": "username",
            "name": "fullname"
        },
        "relation2": {
            "id": 5,
            "column": "data2",
            "relationcount1": 0,
            "relationcount2": 3
        }
    },
    {
        "id": 5,
        "column": "data2",
        "relationcount1": 0,
        "relationcount2": 3,
        "relation1": {
            "id": 8,
            "avatar_img": "images",
            "username": "username",
            "name": "fullname"
        },
        "relation2": null
    }
]
 

Таким relation2 образом, они будут заполнены следующими данными текущих данных, но я не могу понять, как это сделать.

Примечание: извините за мой плохой английский.

Комментарии:

1. Что это такое ->with(['relation1=1:column1,column1']) ? Это даже не является допустимым именем функции relation1=1 … И если вы хотите получить другое отношение, существующее в текущей модели/итерации , вам просто нужно продолжить использование with , но добавить другую запись в этот массив. Смотрите это в документации , это поможет вам в том, чего вы хотите достичь.