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

ThinkPHP CURD 操作速查表:鏈式查詢、聚合、原生 SQL 執行

     編輯:PHP 相關知識

ThinkPHP CURD 操作速查表

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();

新增 (返回自增 ID 或影響行數)

$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');

原生 SQL 執行 (Db 門面)

// 查詢 (返回二維陣列)
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/NotInIN 查詢whereIn('id', [1,2,3])
whereBetween範圍whereBetween('created_at', [$start, $end])
whereNull/NotNullNULL 判斷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

// 獲取最後執行的 SQL
echo User::getLastSql();
// 或開啟配置
// 'database' => ['debug' => true] // 日誌記錄所有 SQL
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved