#json #laravel #api #formatting #parameter-passing
#json #laravel #API #форматирование #передача параметров
Вопрос:
У меня есть две модели с именами Student и Roll. Я хочу, чтобы их данные оставались на одном уровне. Часть контроллера..
$stuents=Student::all();
$count=$stuents->count();
$rolls=Roll::all();
$response=[];
for($i=0;$i<$count;$i ){
$response[$i]=[
'students'=>$stuents[$i],
'roll_number'=>$rolls[$i]
];
}
return response($response);
Вывод приведенного выше ответа..
[
{
"students": {
"name": "habib",
"dept": "ece"
},
"roll": 1609047
},
{
"students": {
"name": "hafiz",
"dept": "ece"
},
"roll": 1609061
}
]
Но мой ожидаемый результат будет..
[
{
"students": {
"name": "habib",
"dept": "ece",
"roll": 1609047
}
},
{
"students": {
"name": "hafiz",
"dept": "ece",
"roll": 1609061
}
}
]
Как я могу решить эту проблему?
Ответ №1:
Вам нужно будет добавить роль для каждого учащегося, которую вы добавляете в массив ответов.
Если объекты в $students
:
for ($i = 0; $i < $count; $i ) {
// if object
$students[$i]->roll = $rolls[$i];
$response[] = [
'student' => $students[$i],
];
}
Если массивы в $students
:
for ($i = 0; $i < $count; $i ) {
$response[] = [
'student' => ['roll' => $rolls[$i]] $students[$i],
];
}