Yii2中 AR操作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 條件來自於用戶的輸入時,你通常需要忽略用戶輸入的空值。 例如,在一個可以通過用戶名或者郵箱搜索的表單當中,用戶名或者郵箱 輸入框沒有輸入任何東西,這種情況下你想要忽略掉對應的搜索條件, 那么你就可以使用 yii\db\Query::filterWhere() 方法來實現這個目的:

// $username 和 $email 來自於用戶的輸入 $query->filterWhere([ 'username' => $username, 'email' => $email, ]); 

yii\db\Query::filterWhere() 和 where() 唯一的不同就在於,前者 將忽略在條件當中的hash format的空值。所以如果 $email 為空而$username 不為空,那么上面的代碼最終將生產如下 SQL ...WHERE username=:username

提示: 當一個值為 null、空數組、空字符串或者一個只包含空白字符時,那么它將被判定為空值。

類似於 [yii\db\Query::andWhere()|andWhere()]] 和 orWhere(), 你可以使用 yii\db\Query::andFilterWhere() 和yii\db\Query::orFilterWhere() 方法 來追加額外的過濾條件。

andWhere和andFilterWhere都可以用來追加條件,只是andFilterWhere會忽略條件中的空值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM