我正在制作一个新的Yii SwingUtilties.invokeLater()
,并希望添加以下条件:
CDbCriteria
但是,在我的应用程序中,变量$criteria = new CDbCriteria();
$criteria->compare('code', $code);
可以是空字符串。我在文档中读到了:
当值为空时,不会将任何比较表达式添加到 搜索条件。
这对我来说不是理想的行为。我希望它与空字符串进行比较。有没有办法使用$code
来实现这一目标?
我可以改为使用以下查询吗?这样安全吗?
compare
如果是,$criteria->addCondition("code = $code");
和compare
之间有哪些缺点/好处?
答案 0 :(得分:3)
CDbCriteria::compare()
是addCondition
的快捷包装器(后者无论如何在其体内调用)。该方法的设计使其涵盖了处理过滤标准的最常见用例;这就是为什么它忽略了“无意义”的输入。由于你的情况在覆盖区域之外,你应该使用低级addCondition
,但有一个转折点:
$criteria->addCondition('code = :code');
$criteria->params[':code'] = $code;
您还可以使用其他快捷方式:
$criteria->addColumnCondition(array('code' => $code));