TP6模型操作
數據庫的所有查詢構造器方法模型中都可以支持,可以定義自己的方法,
所以也可以把模型看成是數據庫的增強版
一、模型的定義
<?php namespace app\model; use think\Model; class UserModel extends Model { protected $table= 'user'; //設置表名 protected $pk = 'uid'; //設置主鍵ID }
個人推薦Model類 都以 Model為后綴。例如:UserModel、
二、模型的使用
//引入模型類: use app\model\UserModel; //模型使用 User::where('id','>',10)->select();
使用模型新增數據:
$add_data = [ 'name' => 'thinkphp', 'email' => 'thinkphp@qq.com' ]; $user = User::create($add_data); echo $user->id; // 獲取自增ID
使用模型批量新增數據:
$user = new User; $list = [ ['name'=>'thinkphp','email'=>'thinkphp@qq.com'], ['name'=>'onethink','email'=>'onethink@qq.com'] ]; $user->saveAll($list);
使用模型更新數據:
$user = User::find(1); $user->name = 'thinkphp'; $user->email = 'thinkphp@qq.com'; $user->save(); 或直接更新 User::update(['name' => 'thinkphp', 'id' => 1]);
如果需要執行SQL函數更新,可以使用如下方法
$user->score = Db::raw('score+1');
字段過濾 ,只允許某些字段更新
$user = User::find(1); // post數組中只有name和email字段會寫入 $user->allowField(['name', 'email'])->save($_POST);
刪除數據
//1、先查詢后刪除 $user = User::find(1); $user->delete(); //2、根據條件刪除 User::where('id','>',10)->delete(); //3、根據主鍵刪除數據 User::destroy(1); // 支持批量刪除多個數據 User::destroy([1,2,3]);
查詢單條數據:
// 取出主鍵為1的數據 $user = User::find(1); // 使用查詢構造器查詢滿足條件的數據 $user = User::where('name', 'thinkphp')->find(); //如果希望查詢數據不存在則返回一個空模型,可以使用 $user = User::findOrEmpty(1); //用isEmpty方法來判斷當前是否為一個空模型 if (!$user->isEmpty()) { echo $user->name; }
查詢多條數據:
// 根據主鍵獲取多個數據 $list = User::select([1,2,3]); // 對數據集進行遍歷操作 foreach($list as $key=>$user){ echo $user->name; } //使用查詢構造器 $list = User::where('status', 1)->limit(3)->order('id', 'asc')->select(); foreach($list as $key=>$user){ echo $user->name; } // 獲取某個用戶的積分 User::where('id',10)->value('score'); // 獲取某個列的所有值 User::where('status',1)->column('name'); // 以id為索引 User::where('status',1)->column('name','id');