2012-08-29 26 views
0

我使用Yii Framework,我需要在許多條件下構建困難的查詢。 我正在填充2個數組$條件和$值。 而我有一個問題。 下面是當我使用在Yii查詢構建器中遇到IN問題

$usersId = '1,2'; 
$conditions[] = 'e.user_id IN(:usersId)'; 
$values[':usersId'] = $usersId; 

我從只得到價值例如 USER_ID = 1

當我不使用的選項,並手動

$usersId = '1,2'; 
$conditions[] = 'e.user_id IN(' . $usersId . ')'; 

沒有問題。

當然,我可以使用第二個建築,但它似乎不是很好。

回答

2

你應該addInCondition

$criteria->addInCondition('e.user_id',array(1,2)); 
1

$ values [':usersId'] = $ usersId;

如果我正確理解了你的wuestion,你可以在yii中使用BindParam函數嗎?

而不是這個 - $ values [':usersId'] = $ usersId;編寫這個 - $ command-> BindParam(':usersId',$ usersId,PDO :: PARAM_STR);

很簡單,您將您的參數綁定到您的命令語句。

希望它的作品!

2

Yii的方式是使用CDbCriteriaaddInCondition功能

$usersId = array(1,2); //must be array 
$criteria=new CDbCriteria(); 
$criteria->addInCondition('user_id',$usersId); 

$result = MyModel::model()->findAll($criteria);