我希望的查询结果应该是这样的:
请教各位有什么好的思路或方法嘛?
补充一下:
我暂时是这样做的:
$query = $model::find();
$data = $query->where(['menu_parent'=>0])->orderBy('menu_position asc')->asArray()->all();
$i = 0;
foreach($data as $k=>$v){
if($v['menu_parent']!=0){
continue;
}
$level = $query->where(['menu_parent'=>$v['menu_position']])->asArray()->all();
array_splice($data,$k+1+$i,0,$level);
$i=count($level);
}
foreach($data as $k=>$v){
echo $k.'的值:'.$v['menu_name']."<br>";
}
有没有什么更好的方法?
你把menu_value定义为varchar,然后order by menu_value 就是按照你这个方式来排序了,1在2前面,所以,1-1 的记录也会在2前面
做菜单、或者分类树,可以用递归,给个父级ID做标识。
循环查询子级