【发布时间】:2020-08-02 13:43:48
【问题描述】:
我的代码运行良好。
$amenityCategoryMapping1 = AmenityCategoryMapping::where('property_id', $property->id)
->orderBy('amenity_name','asc')
->orderBy('updated_at','desc')
->pluck('category_id', 'amenity_name')->toArray();
$amenityCategoryMapping2 = AmenityCategoryMapping::where('company_id', $property->company_id)
->orderBy('amenity_name','asc')
->orderBy('updated_at','desc')
->pluck('category_id', 'amenity_name')->toArray();
$amenityCategoryMapping3 = AmenityCategoryMapping::whereNull('property_id')
->orderBy('amenity_name','asc')
->orderBy('updated_at','desc')
->pluck('category_id', 'amenity_name')->toArray();
$amenityCategoryMapping = array_merge($amenityCategoryMapping3, $amenityCategoryMapping2, $amenityCategoryMapping1 );
但是,目前我正在执行 3 个不同的查询,以仅使用不同的参数从同一个表中提取数据。有什么方法可以最小化这个查询请求并且仍然收到相同的结果?
目前,如果两个数组具有相同的键,那么我将用amenityCategoryMapping2 替换amenityCategoryMapping3 和amenityCategoryMapping1。那应该优先考虑amenityCategoryMapping1
【问题讨论】:
-
合并数组的顺序重要吗?
-
@user3532758 是
-
你也许可以使用
union,从1和2中删除pluck和toArray方法,然后在2上使用union合并1,然后在3上合并2。使用采摘最后一个。那应该处理重复项。但是,请在放弃当前方法之前分析性能。根据您的数据集和内存限制,联合可能更快或更慢。
标签: laravel laravel-5.8