请教:关联表查询中的排除. [ 新手入门 ]
帮我分析个写法. 表A,用户表 表B,权限表 表C,权限分派表
我需要拉出来,用户未分派的权限列表. 目前我只能拉出来所有权限,然后拉出来用户的权限.再去排除. 这样好像挺麻烦的.如果用AR来实现的话怎么处理? 不会只能自己写SQL语句吧?用Find之类的,配合模型里面的关联,能不能实现
共 10 条回复
-
感谢 路人甲 提供参考.先帖出来再研究.
public function getDiffItemTree ( $itemChildren ) { $type = $this -> getType (); $typeItems = $diffItems = array ( ); $typeItems = $this -> getAuthItems ( $type,'child','item_id,type,name' ); $typeItems = $this -> getItemTree ( $typeItems ); foreach ( $typeItems as $key => $value ) { $diffItems [ $key ] = array_diff_assoc ( $typeItems[ $key ],$itemChildren[ $key ] ); } return $diffItems; }
-
没手写过SQL在Yii里了好久……
User {{users}} (id ... ); Auth {{auths}} (id ... ); Relation {{relations}}(userId, authId);
这三那个表啊
User::relations(){ return array( 'auths' => array(self::MANY_MANY, 'Auth', '{{relations}}(userId, authId)'), ); } Auth::relations() { return array( 'users' => array(self::MANY_MANY, 'User', '{{relations}}(authId, userId)'), ); }
然后查出所有没有被关联过的Auth么,就没啥难度了吧?
-
找到解决方法了.帖出来共享:
//实现本句:
SELECT * from g_app_sys where id not IN ( SELECT app_id from g_user_app_role where user_id is null); if ($this->_haveapps === null) { $this->_haveapps = AppSys::model()->findAll(array( 'with'=>array('userAppRoles'),//关联表的Model名 'condition'=>'userAppRoles.user_id is null', ) ); } return $this->_haveapps;
with的参数参考此地址:http://yiiframework.net/post/68/Active+Record+%E5%85%B3%E8%81%94
caridy
注册时间:2011-05-19
最后登录:2022-07-01
在线时长:3小时53分
最后登录:2022-07-01
在线时长:3小时53分
- 粉丝6
- 金钱480
- 威望0
- 积分510