如何在YII ACtive Record中使用IN&Between子句?

Kal*_*tha 10 yii

我想在Active记录中写一个Follow Query.

SELECT *
FROM `User`
WHERE `UserId`
IN ( 6, 7, 8, 9 ) ;
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 31

你可以使用CDbCriteria声明:

$criteria = new CDbCriteria();
$criteria->addInCondition('userId', array(6,7,8,9));
$result = User::model()->findAll($criteria);
Run Code Online (Sandbox Code Playgroud)


The*_*ndr 10

您可以将数组作为特定属性的值,如下所示(未经测试):

$model=new User();
$result=$model->findAllByAttributes(array('UserId'=>array(6,7,8,9)));
Run Code Online (Sandbox Code Playgroud)


Jus*_*nas 8

如果要更快地获取查询,请使用Command Builder:

Yii::app()->db->createCommand()
    ->select('*')
    ->from('user')
    ->where(array('in', 'UserId', array(6, 7, 8, 9)))
    ->queryAll();
Run Code Online (Sandbox Code Playgroud)

要通过CActiveRecord获取它,请使用 findAllByAttributes

User::model()
    ->findAllByAttributes(array(
         'UserId' => array(6,7,8,9)
    ));
Run Code Online (Sandbox Code Playgroud)

但是它将获得具有所有相关关系的User的完整对象,因此它更慢.