zoukankan      html  css  js  c++  java
  • yii框架中的andFilterWhere 和 andWhere的区别

    附加条件
    你可以使用 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为空而email为空而username 不为空,那么上面的代码最终将生产如下 SQL …WHERE username=:username。

    提示: 当一个值为 null、空数组、空字符串或者一个只包含空白字符时,那么它将被判定为空值。

    类似于 [yiidbQuery::andWhere()|andWhere()]] 和 orWhere(), 你可以使用 yiidbQuery::andFilterWhere() 和yiidbQuery::orFilterWhere() 方法 来追加额外的过滤条件。

    andWhere和andFilterWhere都可以用来追加条件,只是andFilterWhere会忽略条件中的空值

  • 相关阅读:
    PostgreSQL Monitor pg_activity
    bzoj2333 [SCOI2011]棘手的操作
    bzoj1499 [NOI2005]瑰丽华尔兹
    bzoj2561 最小生成树
    bzoj2038 [2009国家集训队]小Z的袜子(hose)
    bzoj2002 [Hnoi2010]Bounce 弹飞绵羊
    bzoj3589 动态树
    bzoj4034 [HAOI2015]树上操作
    bzoj4774 修路
    2018.1.14 省选模拟赛
  • 原文地址:https://www.cnblogs.com/zsczsc/p/15016791.html
Copyright © 2011-2022 走看看