Saya sedang membina aplikasi yang mengandungi maklumat tentang pokok. Pokok tergolong dalam banyak zon. Jadi untuk menyelesaikan masalah ini, saya mencipta dua jadual data yang dipanggil Trees dan TreeZones, yang mempunyai padanan kunci utama dan kunci asing. Saya menggunakan pengendali "hasMany" dan "belongsTo" untuk mewujudkan hubungan antara keduanya. Semuanya sebenarnya berfungsi dengan baik, tetapi ada masalah. Aplikasi ini mempunyai pengawal API REST. Dalam fungsi indeks saya mendapat semua data pokok. Saya juga memerlukan zon. Saya menyelesaikan masalah seperti ini:
/** public function index() { $trees = Tree::all(); foreach($trees as $key => $tree){ $treeData = Tree::find($tree->id); foreach($treeData->zones as $zone) { $trees[$key]['zones'][] = $zone->zone; } } return ['data'=>$trees]; }
Hasil keluaran adalah seperti berikut:
{ "id": 1, "name": "Kavak Ağacı", "min": "-45.6", "max": "-42.8", "url": "https://p4.wallpaperbetter.com/wallpaper/255/713/198/poplar-trees-near-lake-wallpaper-preview.jpg", "zones": [ { "zone": "2a" }, { "zone": "4b" } ] }, . . . }
Tetapi saya mahu hasilnya kelihatan seperti ini:
{ "id": 1, "name": "Kavak Ağacı", "min": "-45.6", "max": "-42.8", "url": "https://p4.wallpaperbetter.com/wallpaper/255/713/198/poplar-trees-near-lake-wallpaper-preview.jpg", "zones": [ "2a", "4b", "5c" ] }, . . . }
Bagaimana untuk menyelesaikan masalah ini dengan penyelesaian yang kemas?
Anda boleh menggunakan kaedah
transform()
dan menggunakan Memuat bersemangat dan bukannya menggunakan panggilan DB dalam gelung foreach. Cuba ini