1.今天在用地區表setting_area和國家表setting_country進行作業務時,羅列國家字段,想知道對應是哪一個地區而且要知道這個地區的詳細信息,有人會使用雙層foreach的寫法,數量少,固然沒問題,可是一旦遍歷的必定量的數據,這個寫法會被捱罵吧!laravel
2.拋出使用laravel的with方法,其實能夠考慮使用數組key映射的思想。數組
3.例如先查出來全部的國家數據,國家裏面時有個字段area_id關聯是地區表主鍵,(建議吧地區名稱area_name同時冗餘到國家表中,),固然,這個反範式有好處也有很差的地方,這裏不贅述,能夠自行百度。code
國家表查出來吼,檢索出對應的area_id,而且進行去重開發
用這個area_id的結果集,ids,到地區表進行wherein的查詢get
重點來了,吧獲取的id固然一個二維數組的key,能夠用array_column實現。it
最後foreach獲取的國家數據,用數組key映射的辦法映射進去,便可。table
4.賦值代碼以下:百度
$country = DB::table("setting_country")->get(); $ids = array_unique($country->pluck('area_id')->toArray()); $some_other_infos = SettingAreaModel::select() ->whereIn('id', $ids) ->get() ->toArray(); $new_array = array_column ($some_other_infos,null,"id"); foreach ($country as $key=>$item) { $country[$key]->area_info = $new_array[$item->area_id]; }
代碼只是隨手寫寫,開發的時候不建議使用Facades裏的DB,建議區使用單例模式的思想去書寫,更加優雅。foreach