Yii中的复杂查询

kb5ga3dv  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(112)

在我的模型中,我有一个生成ID随机列表的函数。如何在我的模型中创建这样的查询?

select * from `table`
  where (ID % 1000) = floor(rand() * 1000)
  AND `type`='11'
  order by rand()
  limit 40

我知道我可以使用query builder的方式,但我想知道是否有一种方式可以使用类似ABC::model()->findAll()...的东西

cl25kdpy

cl25kdpy1#

您始终可以使用CDbCriteria

$criteria = new CDbCriteria();
$criteria->addCondition('`t`.`id` % 1000 = floor(rand() * 1000)');
$criteria->compare('`t`.`type`', 11);
$criteria->order = 'rand()';
$criteria->limit = 40;

ABC::model()->findAll($criteria);
uqdfh47h

uqdfh47h2#

您可以尝试以下操作:

$model = ABC::model()->findAll(
    array(
       "condition"=>"type = 11 AND (ID % 1000 = floor(rand() * 1000))",
       "order"=>"rand()",
       "limit" => 40
    )
);

相关问题