使用Yii的CDbCriteria的比较方法和空字符串

时间:2015-08-27 15:37:44

标签: php sql yii criteria

我正在制作一个新的Yii SwingUtilties.invokeLater(),并希望添加以下条件:

CDbCriteria

但是,在我的应用程序中,变量$criteria = new CDbCriteria(); $criteria->compare('code', $code); 可以是空字符串。我在文档中读到了:

  

当值为空时,不会将任何比较表达式添加到   搜索条件。

这对我来说不是理想的行为。我希望它与空字符串进行比较。有没有办法使用$code来实现这一目标?

我可以改为使用以下查询吗?这样安全吗?

compare

如果是,$criteria->addCondition("code = $code"); compare之间有哪些缺点/好处?

1 个答案:

答案 0 :(得分:3)

CDbCriteria::compare()addCondition的快捷包装器(后者无论如何在其体内调用)。该方法的设计使其涵盖了处理过滤标准的最常见用例;这就是为什么它忽略了“无意义”的输入。由于你的情况在覆盖区域之外,你应该使用低级addCondition,但有一个转折点:

$criteria->addCondition('code = :code');
$criteria->params[':code'] = $code;

您还可以使用其他快捷方式:

$criteria->addColumnCondition(array('code' => $code));