Onethink中获取分组菜单,分组是中文名,改用SqlServer数据库后,如何查询出相应的菜单名,下面参数$g是中文
// 按照分组生成子菜单树
foreach ($groups as $g) {
$map = array('group'=> $g);
if(isset($to_check_urls)){
if(empty($to_check_urls)){
// 没有任何权限
continue;
}else{
$map['url'] = array('in', $to_check_urls);
}
}
$map['pid'] = $item['id'];
$map['hide'] = 0;
if(!C('DEVELOP_MODE')){ // 是否开发者模式
$map['is_dev'] = 0;
}
// p($map);die;
$menuList = M('Menu')->where($map)->field('id,pid,title,url,tip,sort')->order('sort asc')->select();
p(M()->getlastsql());
打印出来后的语句
SELECT T1.* FROM (SELECT thinkphp.*, ROW_NUMBER() OVER ( ORDER BY sort asc) AS ROW_NUMBER FROM (SELECT [id],[pid],[title],[url],[tip],[sort] FROM [onethink_menu] WHERE [group] = '数据备份' AND [pid] = 68 AND [hide] = 0 AND [is_dev] = 0 ) AS thinkphp) AS T1
正常SQLSERVER里面中文nvarchar类型,要加个大写的N
SELECT T1.* FROM (SELECT thinkphp.*, ROW_NUMBER() OVER ( ORDER BY sort asc) AS ROW_NUMBER FROM (SELECT [id],[pid],[title],[url],[tip],[sort] FROM [onethink_menu] WHERE [group] = N'数据备份' AND [pid] = 68 AND [hide] = 0 AND [is_dev] = 0 ) AS thinkphp) AS T1 最佳答案