Php Yii 1.x,查询数据库选择中的查询
我有这样的sql查询Php Yii 1.x,查询数据库选择中的查询,php,yii,phpactiverecord,Php,Yii,Phpactiverecord,我有这样的sql查询 SELECT * FROM tbl_role WHERE tbl_role.id NOT IN ( SELECT tbl_user_role.roleID FROM tbl_user_role WHERE tbl_user_role.userID = 35 ) AND tbl_role.id NOT IN ( SELECT tbl_user_role_request.roleID FROM tbl_user_role_request
SELECT * FROM tbl_role WHERE
tbl_role.id NOT IN (
SELECT tbl_user_role.roleID FROM tbl_user_role
WHERE tbl_user_role.userID = 35
)
AND
tbl_role.id NOT IN (
SELECT tbl_user_role_request.roleID FROM tbl_user_role_request
WHERE tbl_user_role_request.userID = 35 AND tbl_user_role_request.dateEnd IS NULL)
用Yii-like代码实现它的最佳解决方案是什么。如何使用Yii 1.x执行此查询?我将使用
CDbCommand
:
使用以下代码获取数据
$data = Yii::app()->db->createCommand('sql query')->queryAll;
然后可以使用此数据集创建dropDownList
$list = CHtml::listData($data, 'value field', 'text field');
echo $form->dropDownList($model, 'attribute', $list);
假设:
- tbl_角色有一个名为role的模型
- tbl_user_角色有一个名为UserRole的模型
- tbl_user_role_请求有一个名为UserRoleRequest的模型
<?php
$userId = 35;
$roles = UserRole::findAllByCondition(array('userId' => $userId));
$roleIds = array_values(CHtml::listData($roles, 'roleId', 'roleId');
$roleRequests = UserRoleRequest::findAllByCondition(array('userId'=>$userId, 'dateEnd'=>null));
$roleRequestIds = array_values(CHtml::listData($roleRequest, 'roleId', 'roleId'));
$criteria = new CDbCriteria();
$criteria->addNotInCondition('id', $roleIds);
$criteria->addNotInCondition('id', $roleRequestIds);
$roles = Role::findAll($criteria);
您将如何处理查询结果?@jagsler在dropDownList
查询生成器中的CActiveForm
小部件中使用,是的,但我想知道我是否可以像doctrine2一样创建它?使用->leftJoin(),->和where()等。