Я пытаюсь получить конкретный вывод для создаваемого API, однако для одного из извлекаемых соединений требуется новое назначенное ему значение ключа, поэтому я помещаю его в цикл for. Однако из-за того, что выходные данные присваиваются новому массиву, значения повторяются, я попытался указать, что могут быть назначены только значения, не входящие в массив, но это все равно не решает мою проблему. Если бы кто-нибудь мог помочь, было бы здорово.
public function showAllTeamInformation()
{
// get the team id
$teamid = Teams::all()->pluck('team_id')->toArray();
// get all the team info
$teaminfomratin = Teams::all()->toArray();
// the complete loop by team id nu,ber
foreach ($teamid as $number) {
// get the skill name and scor
$skills[] = Teams::find($number)->skills->pluck('skill_name',
'score')->toArray();
// get the hobbies
$hobbies[] = Teams::find($number)->hobbies->pluck('hobby');
$final =array();
// for loop to assignemtn new key value
foreach($skills as $row => $value){
foreach($value as $rows => $values){
if (!in_array($values, $final))
{
$final['skills'][] = array('name'=>$values , 'skill' => $rows);
}
}
}
foreach($hobbies as $row => $value){
$newArrays['hobbies'] = $value;
}
// merging them all together
$output_array[$number-1] = array_merge($teaminfomratin[$number-
1], $final, $newArrays);
}
return response()->json($output_array);
}
Токовый выход
[
{
"team_id": 1,
"first_name": "jack",
"surname": "churchill",
"nickname": "jacko",
"role": "developer",
"image_url": "jack.jpg",
"team": "production",
"company": "chelsea apps",
"created_at": null,
"updated_at": null,
"skills": [
{
"name": "mysql",
"skill": 4
},
{
"name": "php",
"skill": 5
}
],
"hobbies": [
"running",
"more"
]
},
[
{
"team_id": 1,
"first_name": "jack",
"surname": "churchill",
"nickname": "jacko",
"role": "developer",
"image_url": "jack.jpg",
"team": "production",
"company": "chelsea apps",
"created_at": null,
"updated_at": null,
"skills": [
{
"name": "mysql",
"skill": 4
},
{
"name": "php",
"skill": 5
}
],
"hobbies": [
"running",
"more"
]
},
{
"team_id": 2,
"first_name": "marco",
"surname": "",
"nickname": "marco",
"role": "frontend",
"image_url": "marco.jpg",
"team": "dev",
"company": "chelseaapps",
"created_at": null,
"updated_at": null,
"skills": [
{
"name": "mysql",
"skill": 4
},
{
"name": "php",
"skill": 5
},
{
"name": "sass",
"skill": 4
}
],
"hobbies": [
"running",
"netflix"
]
},
{
"team_id": 3,
"first_name": "harry",
"surname": "smith",
"nickname": "harry ",
"role": "marketing",
"image_url": "harry.jpg",
"team": "marketing",
"company": "chelsea apps",
"created_at": null,
"updated_at": null,
"skills": [
{
"name": "mysql",
"skill": 4
},
{
"name": "php",
"skill": 5
},
{
"name": "sass",
"skill": 4
},
{
"name": "being cool",
"skill": 5
}
],
"hobbies": [
"going out"
]
}
]
Как видите, навыки копируются в следующий объект, который не является правильным.
Правильный вывод для команды 2 и 3, например, будет
[
{
"team_id": 1,
"first_name": "jack",
"surname": "churchill",
"nickname": "jacko",
"role": "developer",
"image_url": "jack.jpg",
"team": "production",
"company": "chelsea apps",
"created_at": null,
"updated_at": null,
"skills": [
{
"name": "mysql",
"skill": 4
},
{
"name": "php",
"skill": 5
}
],
"hobbies": [
"running",
"more"
]
},
{
"team_id": 2,
"first_name": "marco",
"surname": "",
"nickname": "marco",
"role": "frontend",
"image_url": "marco.jpg",
"team": "dev",
"company": "chelseaapps",
"created_at": null,
"updated_at": null,
"skills": [
{
"name": "sass",
"skill": 4
}
],
"hobbies": [
"running",
"netflix"
]
},
{
"team_id": 3,
"first_name": "harry",
"surname": "smith",
"nickname": "harry ",
"role": "marketing",
"image_url": "harry.jpg",
"team": "marketing",
"company": "chelsea apps",
"created_at": null,
"updated_at": null,
"skills": [
{
"name": "being cool",
"skill": 5
}
],
"hobbies": [
"going out"
]
}
]