首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

ThinkPHP 常用查詢語言匯總:普通、表達式、區間、組合、統計、定位、SQL、動態查詢

     編輯:PHP 綜合知識

ThinkPHP 提供豐富的查詢語言封裝,支援從簡單條件到複雜組合查詢。本文系統匯總八大類查詢用法,附代碼範例供快速查閱。

一、普通查詢 (where 條件構建)

1. 字串形式

$user->where('id > 5 AND id < 9')->select();

2. 陣列形式 (推薦,安全)

$data = ['username' => 'liwenkai'];
$user->where($data)->select();
// 或
$user->where(['username' => 'liwenkai'])->select();

3. 物件形式

$obj = new stdClass();
$obj->username = 'liwenkai';
$user->where($obj)->select();

二、查詢表達式 (陣列鍵值對)

表達式SQL 對應範例
EQ / ==['id', ['eq', 5]]
NEQ / !=!=['id', ['neq', 5]]
GT / >>['id', ['gt', 5]]
EGT / >=>=['id', ['egt', 5]]
LT / <<['id', ['lt', 10]]
ELT / <=<=['id', ['elt', 10]]
LIKELIKE['name', ['like', 'peng%']]
[NOT] BETWEENBETWEEN['id', ['between', '1,10']]
[NOT] ININ['id', ['in', '1,2,3']]
EXP原生 SQL 片段['id', ['exp', 'IN (SELECT uid FROM log)']]

簡寫:['username' => 'liwenkai'] 等同 ['username' => ['eq', 'liwenkai']]。

三、區間查詢 (多條件同欄位)

// id > 20 AND id < 23
$data['id'] = [['gt', 20], ['lt', 23], 'and'];
$user->where($data)->select();

// username LIKE 'p%' OR username LIKE 'h%'
$data['username'] = [['like', 'p%'], ['like', 'h%'], 'or'];
$user->where($data)->select();

四、組合查詢 (多欄位邏輯組合)

$data['username'] = 'pengyanjie';
$data['password'] = ['eq', 'pengyanjie'];
$data['id'] = ['lt', 30];
$data['_logic'] = 'or'; // 欄位間邏輯:or / and (預設 and)
// SQL: (username='pengyanjie' OR password='pengyanjie' OR id<30)
$user->where($data)->select();

五、複合查詢 (巢狀邏輯群組)

$where['username'] = ['eq', 'pengyanjie'];
$where['password'] = ['like', 'p%'];
$where['_logic'] = 'or';

$data['_complex'] = $where;
$data['id'] = ['lt', 30];
// SQL: (id < 30) AND ( (username='pengyanjie') OR (password LIKE 'p%') )
$user->where($data)->select();

六、統計查詢

echo $user->count();      // 總筆數
echo $user->max('id');    // 最大值
echo $user->min('id');    // 最小值
echo $user->avg('id');    // 平均值
echo $user->sum('id');    // 總和

// 帶條件統計
echo $user->where('id < 30')->min('id');

七、定位查詢 (AdvModel / CommonModel)

$adv = new AdvModel('user'); // 或 M('user', 'CommonModel')

$adv->order('id DESC')->getN(2); // 第 3 筆 (0-based)
$adv->order('id DESC')->first(); // 第一筆
$adv->order('id DESC')->last();  // 最後一筆
$adv->top5();                    // 前 5 筆 (需模型定義)

八、原生 SQL 查詢

// 查詢用 query()
$list = M()->query('SELECT * FROM aoli_user ORDER BY id DESC');

// 寫入/更新用 execute()
M()->execute("UPDATE think_user SET name='ThinkPHP' WHERE status=1");

九、動態查詢 (魔術方法)

// 根據欄位名動態生成方法
$list = $user->getByUsername('pengyanjie'); // WHERE username='pengyanjie'
$list = $user->getByEmailAndStatus('a@b.com', 1); // WHERE email='a@b.com' AND status=1

查詢方法選擇指南

場景推薦方法
簡單條件陣列 where()
複雜邏輯群組_complex 組合查詢
統計聚合count/max/min/avg/sum
極複雜/效能敏感 SQLquery()/execute() 原生 SQL
動態欄位查詢getByXxx() 魔術方法

熟練掌握查詢語言,能用最少代碼表達最複雜的資料檢索邏輯,是 ThinkPHP 開發者的核心基本功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved