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