数据库查找数据排序之后,使用array_merge组装数组;再根据二维数组的某个字段排序
这里面没有其他其他其他,然后客户在收货地址前写了很多个其他,导致了明明需要运费的,被这个聪明的客户占了便宜。变成了没有运费了!!!这是个bug!!!也不知道存在多久了。
修复过程:以为这样拼接了就能出来其他项目,谁知道还有规则的!!!就是要parent_id倒序才行。前端才能勾选,前端代码实在太复杂了。不好展示。
/**
* 替换旧区域旧数组数据 by Mr.DJ 2020年5月9日11:15:28
* @return mixed
*/
public static function getArrNew()
{
$cache_arr_data = \Yii::$app->cache->get(CacheKeyEnum::DISTRICT_KEY);
if (!$cache_arr_data) {
//Mr.DJ合并其他区域
$others=
[
['id' => 3268, 'name' => '其他', 'parent_id' => 1, 'level' => 'province'],
['id' => 3269, 'name' => '其他', 'parent_id' =>3268, 'level' => 'city'],
['id' => 3270, 'name' => '其他', 'parent_id' => 3269, 'level' => 'district']
];
$data = District::find()->select(['id', 'name', 'parent_id', 'level'])->orderBy('parent_id')->asArray()->all();
$data=array_merge($data,$others);
foreach ($data as $key => $row) {
$distance[$key] = $row['parent_id']; //根据二维数组的字段继续排序。这个可以如下行进行多字段排序拓展
//$distance[$key] = $row['level'];
}
array_multisort($distance, SORT_ASC, $data);
$value = array_column($data, NULL, 'id');
\Yii::$app->cache->set(CacheKeyEnum::DISTRICT_KEY, $value, 86400 * 30);
return $value;
}
return $cache_arr_data;
}