Yii框架where查詢用法例項分析

2022-09-26 03:48:14 字數 2087 閱讀 5989

1.簡述

yii的查詢操作找使用where用的很多 總結下常用的雜湊格式與操作符格式

2.操作符格式

適用於操作符的

[操作符, 運算元1, 運算元2, ...]

[ 'like','nickname','%'.strtr($mix_kw,['%'=>'\%', '_'=>'\_', '\\'=>'\\\\']).'%', false ];

['between', 'id', 1, 10] 將會生成 id between 1 and 10。 如果你需要建立乙個值在兩列之間的查詢條件(比如 11 between min_id and max_id), 你應該使用 betweencolumnscondition。 請參閱 條件-物件格式 一章以了解有關條件的物件定義的更多資訊。

in:第乙個運算元應為欄位名稱或者 db 表示式。第二個操作符既可以是乙個陣列, 也可以是乙個 query 物件。它會轉換成in 條件語句。如果第二個運算元是乙個 陣列,那麼它代表的是字段或 db 表示式的取值範圍。如果第二個運算元是 query 物件,那麼這個子查詢的結果集將會作為第乙個操作符的字段或者 db 表示式的取值範圍。 例如, ['in', 'id', [1, 2, 3]] 將生成 i程式設計客棧d in (1, 2, 3)。 該方法將正確地為欄位名加引號以及為取值範圍轉義。in 操作符還支援組合字段,此時, 運算元1應該是乙個欄位名陣列,而運算元2應該是乙個陣列或者 query 物件, 代表這些欄位的取值範圍。

第乙個運算元應為乙個欄位名稱或 db 表示式,

第二個運算元可以使字串或陣列, 代表第乙個運算元需要模糊查詢的值。比如,['like', 'name','tester'] 會生成 name like '%tester%'。如果範圍值是乙個陣列,那麼將會生成用 and 串聯起來的 多個 like 語句。例如,['like', 'name', ['test', 'sample']] 將會生成 name like '%test%' and name like '%sample%'。

第三個可選的運算元來指定應該如何轉義數值當中的特殊字元。 該運算元是乙個從需要被轉義的特殊字元到轉義副本的陣列對映。 如果沒有提供這個運算元,將會使用預設的轉義對映。如果需要禁用轉義的功能, 只需要將引數設定為 false 或者傳入乙個空陣列即可。需要注意的是, 當使用轉義對映(又或者沒有提供第三個運算元的時候),第二個運算元的值的前後 將會被加上百分號。

>,<= 或者其他包含兩個運算元的合法 db 操作符:第乙個運算元必須為字段的名稱, 而第二個運算元則應為乙個值。例如,['>', 'age', 10] 將會生成 age>10。

3.雜湊格式

適用於簡單的查詢的

它是以陣列的形式來書寫的,陣列的鍵表示欄位的名稱,而陣列的值則表示 這個字段需要匹配的值。例如:

// ...where (`status` = 10) and (`type` is null) and (`id` in (4, 8, 15))

$query->where([

'status' => 10,

'type' => null,

'id' => [4, 8, 15],

]);4.附加條件

你可以使用 andwhere() 或者 orwhere() 在原有條件www.cppcns.com的基礎上 附加額外的條件

5.過濾條件

當 where 條件來自於使用者的輸入時,你通常需要忽略使用者輸入的空值。 例如,在乙個可以通過使用者名稱或者郵箱搜尋的表單當中,使用者名稱或者郵箱 輸入框沒有輸入任何東西,這種情況下你想要忽略掉對應的搜尋條件, 那麼你就可以使用 filterwhere() 方法來實現這個目的:

// $username 和 $email 來自於使用者的輸入

$query->filterwhere([

'username' => $username,

'email' => $email,

]);filterwhere() 和 where() 唯一的不同就在於,前者 將忽略在條件當中的hash format的空值。所以如果$email 為空而 $username 不為空,那麼上面的**最終將生產如下 sql ...where username=:username。

提示: 當乙個值為 null、空陣列、空字串或者乙個只包含空格的字串時,那麼它將被判定為空值。

yii2 0框架where條件的使用

在yii框架中,where條件的使用多種多樣,下面就和大家介紹幾種常用有效的使用方法 1 type 1,status 2 等於 type 1 and status 2 2 id 1,2,3 status 2 等於 id in 1,2,3 and status 2 3 status null 等於 s...

Yii2查詢之where條件拼裝

2017 01 22 4282瀏覽記錄 目錄 熟悉yii2的查詢條件後,用active record查詢資料非常方便。以下我們介紹where 方法當中,條件的拼裝方式。yii2用where 方法 當然還有其他方法 來實現條件篩選,語法 public this where condition,para...

Yii2查詢之where條件拼裝

目錄 1語法2雜湊格式 3運算子格式 3.1對比 3.2and 3.3or 3.4not 3.5between和not between 3.6in和not in 3.7like 3.8exists 熟悉yii2的查詢條件後,用active record查詢資料非常方便。以下我們介紹where 方法當...