ThinkPHP 查詢功能強大靈活,本文系統整理 8 大類查詢技巧,含 Where 條件、區間、組合、複合、統計、定位、SQL、動態查詢,附實戰代碼範例。
$user = M('user');
$list = $user->where('id > 5 AND id < 9')->select();
$list = $user->where(['username' => 'www.phpernote.com'])->select();
$a = new stdClass(); $a->username = 'www.phpernote.com'; $list = $user->where($a)->select();
| 表達式 | SQL 對應 | 範例 |
|---|---|---|
EQ | = | ['username' => ['eq', 'value']] |
NEQ | != | ['username' => ['neq', 'value']] |
GT | > | ['id' => ['gt', 10]] |
EGT | >= | ['id' => ['egt', 10]] |
LT | < | ['id' => ['lt', 20]] |
ELT | <= | ['id' => ['elt', 20]] |
LIKE | LIKE | ['name' => ['like', 'peng%']] |
[NOT] BETWEEN | 區間 | ['id' => ['between', '10,20']] |
[NOT] IN | 集合 | ['id' => ['in', '1,2,3']] |
EXP | 原生 SQL | ['id' => ['exp', 'IN (1,2,3)']] |
簡寫:['username' => 'value']等同['username' => ['eq', 'value']]
$data['id'] = [['gt', 20], ['lt', 23], 'and']; // 20 < id < 23 $list = $user->where($data)->select();
$data['username'] = 'pengyanjie'; $data['password'] = ['eq', 'pengyanjie']; $data['id'] = ['lt', 30]; $data['_logic'] = 'or'; // 全部條件 OR 關係 $list = $user->where($data)->select();
$where['username'] = ['eq', 'pengyanjie']; $where['password'] = ['like', 'p%']; $where['_logic'] = 'or'; $data['_complex'] = $where; $data['id'] = ['lt', 30]; // AND 關係 // 相當於:(id < 30) AND ((username = pengyanjie) OR (password LIKE p%)) $list = $user->where($data)->select();
echo $user->count();
echo $user->max('id');
echo $user->where('id < 30')->min('id');
echo $user->avg('id');
echo $user->sum('id');
$user = new AdvModel('user');
$list = $user->order('id desc')->getN(2); // 第 3 筆(索引 2)
$list = $user->order('id desc')->last(); // 最後一筆
$list = $user->order('id desc')->first(); // 第一筆
// 更新/寫入用 execute
$Model = new Model();
$Model->execute("UPDATE think_user SET name='thinkPHP' WHERE status=1");
// 查詢用 query
$user = M();
$list = $user->query('SELECT * FROM aoli_user ORDER BY id DESC');
$user = M('user');
$list = $user->getByUsername('pengyanjie'); // 依 username 查詢
$user = new AdvModel('user');
$list = $user->top5(); // 前 5 筆(需模型定義 top5 方法)
_complex 結構化表達