0

我正在尝试获取结果where in condition

$email = 'test@gmail.com';                   // This works
$email = 'test@gmail.com,test1@gmail.com';   // This fails

$users = User::model()->findAllByAttributes(array('email'=>array($email)));
print_r($users);

我错在哪里。

4

3 回答 3

1

在这种情况下使用addInCondition

$emails = 'test@gmail.com,test1@gmail.com';
$emailsArray = explode(',', $emails);
$criteria = new CDbCriteria();
$criteria->addInCondition("email", $emailsArray);
$users = User::model()->findAll($criteria);
于 2013-09-24T10:47:22.643 回答
1

这取决于你想要达到的目标。如果要查找具有匹配地址的所有用户,可以使用explode逗号分隔列表转换为数组:

$emails = explode(',', $email);
$users = User::model()->findAllByAttributes(array('email'=>$emails));
于 2013-09-24T10:44:53.783 回答
0

你可以试试这个方法...

$email1="xyz@gmail.com";
$email2="abc@gmail.com";
$users = User::model()->findAllByAttributes(array('email'=>array($email1,$email2)));
print_r($users);

如果您想检查多封电子邮件,请使用 CDbcriteria..

addInCondition()这是最好的方法......

例如..

$email = 'test@gmail.com,test1@gmail.com'; 
$emails = explode(',',$email);
$criteria->addInCondition('email',$emails);
$user=User::model()->findAll(array($criteria)));
print_r($users);

实际上没有尝试过这段代码,但希望它可以工作/帮助你......

于 2013-09-24T10:45:50.467 回答