1. 程式人生 > >Yii框架下的where條件查詢

Yii框架下的where條件查詢

條件查詢

$customers = Customer::find()->where($cond)->all(); 

$cond就是我們所謂的條件,條件的寫法也根據查詢資料的不同存在差異,那麼如何用yii2的方式來寫查詢條件呢?

[[簡單條件]]

// SQL: (type = 1) AND (status = 2).
$cond = ['type' => 1, 'status' => 2] 

// SQL:(id IN (1, 2, 3)) AND (status = 2)
$cond = ['id' => [1, 2, 3], 'status' => 2] 

//SQL:status IS NULL
$cond = ['status' => null]

[【and】]:將不同的條件組合在一起,用法舉例:

//SQL:`id=1 AND id=2`
$cond = ['and', 'id=1', 'id=2']

//SQL:`type=1 AND (id=1 OR id=2)`
$cond = ['and', 'type=1', ['or', 'id=1', 'id=2']]

//SQL:`type=1 AND (id=1 OR id=2)` //此寫法'='可以換成其他操作符,例:in like != >=等
$cond = [
    'and',
    ['=', 'type', 1],
    [
        'or',
        ['=', 'id', '1'],
        ['=', 'id', '2'],
    ]
]

[[or]]:

//SQL:`(type IN (7, 8, 9) OR (id IN (1, 2, 3)))`
$cond = ['or', ['type' => [7, 8, 9]], ['id' => [1, 2, 3]]

[[not]]:

//SQL:`NOT (attribute IS NULL)`
$cond = ['not', ['attribute' => null]]

[[between]]: not between 用法相同

//SQL:`id BETWEEN 1 AND 10`
$cond = ['between', 'id', 1, 10]

[[in]]: 

not in 用法類似

//SQL:`id IN (1, 2, 3)`
$cond = ['in', 'id', [1, 2, 3]] or $cond = ['id'=>[1, 2, 3]]

//IN條件也適用於多欄位
$cond = ['in', ['id', 'name'], [['id' => 1, 'name' => 'foo'], ['id' => 2, 'name' => 'bar']]]

//也適用於內嵌sql語句
$cond = ['in', 'user_id', (new Query())->select('id')->from('users')->where(['active' => 1])]

[[like]]:

//SQL:`name LIKE '%tester%'`
$cond = ['like', 'name', 'tester']

//SQL:`name LIKE '%test%' AND name LIKE '%sample%'`
$cond = ['like', 'name', ['test', 'sample']]

//SQL:`name LIKE '%tester'`
$cond = ['like', 'name', '%tester', false]

[[exists]]: not exists用法類似

//SQL:EXISTS (SELECT "id" FROM "users" WHERE "active"=1)
$cond = ['exists', (new Query())->select('id')->from('users')->where(['active' => 1])]

此外,您可以指定任意運算子如下

//SQL:`id >= 10`
$cond = ['>=', 'id', 10]

//SQL:`id != 10`
$cond = ['!=', 'id', 10]

相關推薦

漲知識,漲知識 :ThinkPHP框架Where條件查詢Mysql數據庫某字段是否為空

field 打印 想要 sts bsp ech 是否為空 time inf 代碼虐我千百遍,我對代碼如初戀~ 問題: 查詢某字段app_date數據是否為NULL,正常我們實現的辦法是: $map[‘app_data‘] = array(‘eq‘,‘null

SSH框架條件查詢查詢結果分頁

之前看過許多別人BLOG中寫的方案,但是沒有自己動手從資料庫、後端、前端全過程實現的話,難以發現自己存在問題。一是沒有形成自己獨有的解決方案,二是不知道理論和現實之間的差異。 本文例子的使用場景:資料庫中儲存了一系列商品資訊,欄位包括商品名字和商品價格。 需

Yii框架where條件查詢

條件查詢 $customers = Customer::find()->where($cond)->all();  $cond就是我們所謂的條件,條件的寫法也根據查詢資料的不同存在差異,那麼如何用yii2的方式來寫查詢條件呢? [[簡單條件]] // SQL:

thinkphp3.2 where 條件查詢

where方法的用法是ThinkPHP查詢語言的精髓,也是ThinkPHP ORM的重要組成部分和亮點所在,可以完成包括普通查詢、表示式查詢、快捷查詢、區間查詢、組合查詢在內的查詢操作。where方法的引數支援字串和陣列,雖然也可以使用物件但並不建議。 字串條

Mysql 中Left/Right join on後面and和where條件查詢的差異-Mysql SQL運算子是有優先順序

一、Mysql中Left/Right join on後面and和where條件查詢的差異 1、建兩張測試表,一張商戶定義表、一張商戶操作狀態明細表 1)商戶定義表 CREATE TABLE hope.merchant (  MERCHANT_id varchar(100) COLLATE ut

SpringBoot框架的SQL查詢空值結果時返回Map型別欄位為空

今天在執行業務的時候發現在一次查詢時, 查詢出當一個欄位值為null時,封裝成Map型別返回的物件則不存在該值如:<select id="getUserDetail" parameterType="java.util.Map" resultType="java.util

springMVC+spring+mybatis 框架分頁查詢

一、Mapper.xml(xml) <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://

yii框架的後臺管理員登入操作

在搭建好後臺的網頁之後,我們需要實現網頁中的功能,如登入,註冊,記住密碼等等.以下分步進行. 本文使用yii框架. 後臺管理員的登入: 1,在mysql中建立管理員的資料表; 編寫sql檔案,具體程式碼如下: DROP TABLE IF EXISTS `test_adm

yii框架 i18nDemo 模式 網站多種語言切換

1)     在根據yii資料夾中的framework/messages/中找到config.php檔案,並將其複製到api/protected/messages下(如果沒有對應檔案,請自己新建)。 2)     在config.php中設計好你需要的集中語言,例如下面這種

MySQL第二天--where條件查詢、檢視及函式

//把資料庫匯出到指令碼檔案 mysqldump -uroot -p1234 --databases abc > d:/a/abc.sql //--databases是需要兩個-- Where

yii框架使用redis

就是 hive 運行程序 port ive config brush alias col 1 首先獲取到 yii2-redis-master.zip 壓縮包 下載地址https://github.com/yiisoft/yii2-redis/archive/master.z

yii框架中findall方法取資料使用總結,包括select各種條件where條件,order by條件,limit限制以及使用單純sql語句query時佔位符的使用等

在yii框架中可以使用對映類的find方法取出一條資料或者用findall方法取出數條資料來,那麼如何按照所需條件來取資料呢,主要用到了CDbCriteria這個類,這個類是yii自帶的操作資料庫的支援類,可以作為引數傳遞給find等方法,這裡用findall做個例子:

yii框架中findall方法取資料使用總結,包括select各種條件where條件,order by條件,limit限制等

在yii框架中可以使用對映類的find方法取出一條資料或者用findall方法取出數條資料來,那麼如何按照所需條件來取資料呢,主要用到了CDbCriteria這個類,這個類是yii自帶的操作資料庫的支援類,可以作為引數傳遞給find等方法,這裡用findall做個例子

在SqlServer裡面沒有索引的情況 where子句的條件順序對查詢效率有影響嗎?

 在沒有建立索引的情況下 在不建立索引的情況下,where子句的條件順序,對查詢結果優化作用不明顯 那麼,就只能通過索引的辦法了 SQLServer查詢分析器不會自動優化嗎? 應該跟VS的編譯器一樣,

解決query查詢輸入geometry參數查詢不到而通過where條件可以查到的問題

gis 查詢參數 數據 ron http 顯示 src 出現 ren 解決query查詢輸入geometry參數查詢不到而通過where條件可以查到的問題 原因: 是因為geometry的坐標系和所要查詢的圖層不一樣導致的(問題引起是由於底圖中疊加了不同的坐標系的引起的)

yii2數據條件查詢-where專題

user attr isset sof sta margin con type name 條件查詢 $customers = Customer::find()->where($cond)->all(); $cond就是我們所謂的條件,條件的寫法也根據查詢數據的

YII 框架查詢

UNC mode 標量 單行 最小值 comm b- 數據行 子查詢 基礎查詢 Customer::find()->one(); 此方法返回一條數據; Customer::find()->all(); 此方法返回所有數據; Customer::f

SSH框架的分頁查詢

一 配置PageBean的java類,即分頁封裝的類。(泛型) 配置一個分頁查詢的實體類,需要配置什麼私有變數?顯然,當前處於多少頁是需要的,總頁數是需要的;總記錄數是需要的,每頁顯示多少個記錄是需要的;記錄內容(集合)也是需要的。 二 顯示當前從資料庫返回的集合記錄的程式碼邏輯: 前幾

Jpa帶拉框的多條件查詢

如下示例: //查詢商品資訊 @Query(value = "select * from tb_product " + "where del_flag=?1 and name like ?4 and " + "case ?2 when 'all' then

MySQL - 如何提高SQL的查詢效率(where條件優化)

目錄 說在前面 35條優化規則 總結 說在前面 整天說SQL優化,SQL優化,到底怎麼才算是SQL優化呢,下面從百度總結了一些關於Oracle裡常用的一些有效的優化方法。僅供參考,文章內容來源於網路。 35條優化規則 (1)優先考慮建立索引 對查詢進行優化,應