简体   繁体   中英

Yii framework where in clause

I am trying to fetch result with 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);

Where i am wrong.

That depends on what you want to achieve. If you want to look up all users with matching addresses, you may use explode to convert comma separated list to array:

$emails = explode(',', $email);
$users = User::model()->findAllByAttributes(array('email'=>$emails));

Use addInCondition for such scenarios.

$emails = 'test@gmail.com,test1@gmail.com';
$emailsArray = explode(',', $emails);
$criteria = new CDbCriteria();
$criteria->addInCondition("email", $emailsArray);
$users = User::model()->findAll($criteria);

you can try this way...

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

if you want to check multiple emails then use CDbcriteria..

addInCondition() this is the best way...

for ex..

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

didn't try this code practically but hope it may work/help you...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM