ThinkPHP (3.x/5.x/6.x/8.x) 核心模型方法高度一致。本文匯總最常用的增刪改查、鏈式操作、聚合統計、原生 SQL 執行,適合貼在工位速查。
// 全部
User::select();
// 條件
User::where('id', '>', 2)->select();
// 排序+分頁+字段
User::where('id', '>', 2)
->order('id desc')
->limit(0, 5)
->field('id,username,email')
->select();
// 分組+Having
User::where('id', '>', 2)
->group('department_id')
->having('count(*) > 3')
->select();
User::find(); // 主鍵查詢
User::where('id', 2)->find();
User::where('email', 'a@b.com')->find();
$data = ['username' => 'wang', 'password' => '123456']; User::create($data); // 返回模型實例 (含 id) User::insert($data); // 返回影響行數 User::insertAll([...]); // 批量插入
User::destroy(2); // 主鍵刪除
User::where('id', 2)->delete();
User::where('status', 0)->delete();
$data = ['username' => 'wang_new', 'password' => 'newpass'];
User::where('id', 2)->update($data);
// 或模型實例更新
$user = User::find(2);
$user->username = 'wang_new';
$user->save();
User::count(); // 總數
User::where('status', 1)->count();
User::max('age');
User::min('score');
User::avg('price');
User::sum('amount');
// 查詢 (返回二維陣列)
Db::query("SELECT * FROM user u JOIN profile p ON u.id=p.user_id WHERE u.id > ?", [10]);
// 寫入 (返回影響行數)
Db::execute("INSERT INTO log (msg, time) VALUES (?, ?)", ['login', time()]);
Db::execute("UPDATE user SET login_count = login_count + 1 WHERE id = ?", [5]);
Db::execute("DELETE FROM cache WHERE expire < ?", [time()]);
| 方法 | 作用 | 示例 |
|---|---|---|
| where(field, op, val) | 條件 | where('age', '>=', 18) |
| whereIn/NotIn | IN 查詢 | whereIn('id', [1,2,3]) |
| whereBetween | 範圍 | whereBetween('created_at', [$start, $end]) |
| whereNull/NotNull | NULL 判斷 | whereNull('deleted_at') |
| order(field, dir) | 排序 | order('id', 'desc') |
| limit(offset, length) | 分頁 | limit(10, 20) |
| field(fields) | 選擇字段 | field('id,name') |
| group/having | 分組 | group('type')->having('count(*)>5') |
| join/table/alias | 聯表 | join('profile p', 'u.id=p.user_id') |
| lock(true/false) | 行鎖 | lock(true) // FOR UPDATE |
// 獲取最後執行的 SQL echo User::getLastSql(); // 或開啟配置 // 'database' => ['debug' => true] // 日誌記錄所有 SQL