Yii中的andWhere和andFilterWhere
附加条件
你可以使用 andWhere() 或者 orWhere() 在原有条件的基础上 附加额外的条件。你可以多次调用这些方法来分别追加不同的条件。 例如,
$status = 10;
$search = "yii";
$query->where(["status" => $status]);
if (!empty($search)) {
$query->andWhere(["like", "title", $search]);
}
如果 $search
不为空,那么将会生成如下 SQL 语句:
... WHERE (`status` = 10) AND (`title` LIKE "%yii%")
过滤条件
当 WHERE
条件来自于用户的输入时,你通常需要忽略用户输入的空值。 例如,在一个可以通过用户名或者邮箱搜索的表单当中,用户名或者邮箱 输入框没有输入任何东西,这种情况下你想要忽略掉对应的搜索条件,
那么你就可以使用 yiidbQuery::filterWhere() 方法来实现这个目的:
// $username 和 $email 来自于用户的输入
$query->filterWhere([
"username" => $username,
"email" => $email,
]);
yiidbQuery::filterWhere() 和 where() 唯一的不同就在于,前者
将忽略在条件当中的hash format的空值。所以如果 $email
为空而$username
不为空,那么上面的代码最终将生产如下
SQL ...WHERE username=:username
。
提示: 当一个值为 null、空数组、空字符串或者一个只包含空白字符时,那么它将被判定为空值。
类似于 [yiidbQuery::andWhere()|andWhere()]] 和 orWhere(), 你可以使用 yiidbQuery::andFilterWhere() 和yiidbQuery::orFilterWhere() 方法 来追加额外的过滤条件。
andWhere和andFilterWhere都可以用来追加条件,只是andFilterWhere会忽略条件中的空值
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: php 正则匹配中文 utf8编码/^[x{4e00}-x{9fa5}]+$/
- 下一篇:没有了