Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Yii 1.x,查询数据库选择中的查询_Php_Yii_Phpactiverecord - Fatal编程技术网

Php Yii 1.x,查询数据库选择中的查询

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

我有这样的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 
     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的模型
请注意,这将执行3个单独的查询,但我相信这是在不造成总体混乱的情况下可以得到的最接近的查询

<?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()等。