我正在制作一个新的 Yii CDbCriteria
,并想添加以下条件:
$criteria = new CDbCriteria();
$criteria->compare('code', $code);
但是,在我的应用程序中,变量 $code
可以是空字符串。我在文档中读到:
When the value is empty, no comparison expression will be added to the search condition.
这对我来说不是理想的行为。我希望它与空字符串进行比较。有没有办法使用 compare
来完成此操作?
我还可以使用以下查询吗?安全吗?
$criteria->addCondition("code = $code");
如果是这样,compare
和 addCondition
之间的缺点/优点是什么?
最佳答案
CDbCriteria::compare()
是 addCondition
的快捷方式包装器(无论如何,后者都会在其主体内调用)。该方法的设计涵盖了处理过滤条件的最常见用例;这就是为什么它会忽略“无意义”的输入。由于您的案例位于覆盖区域之外,因此您应该使用低级 addCondition
,但有一个变化:
$criteria->addCondition('code = :code');
$criteria->params[':code'] = $code;
您还可以使用另一种快捷方式:
$criteria->addColumnCondition(array('code' => $code));
关于php - 使用 Yii 的 CDbCriteria 的比较方法与空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32253776/