#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
, но добавить другую запись в этот массив. Смотрите это в документации , это поможет вам в том, чего вы хотите достичь.