[TOC]
#### Db用法
~~~
Db::table('user')
->insert([
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com',
]);
~~~
#### 模型用法
~~~
$user = new User;
$user->name = 'thinkphp';
$user->email = 'thinkphp@qq.com';
$user->save();
~~~
或者批量設置
~~~
$user = new User;
$user->save([
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com',
]);
~~~
上面兩種方式等效,當你的模型數據比較多不想一一賦值的時候,可以使用后者。
如果你通過外部提交賦值給模型,并且希望指定某些字段寫入,可以使用:
~~~
$user = new User($_POST);
// post數組中只有name和email字段會寫入
$user->allowField(['name','email'])->save();
~~~
如果需要過濾非數據表字段的數據,可使用:
~~~
$user = new User($_POST);
// 過濾post數組中的非數據表字段數據
$user->allowField(true)->save();
~~~
#### 獲取自增ID
也許你咋一看還覺得麻煩了,又是實例化又是賦值的,但好處多多,慢慢你就會體會到了,看起來是一個簡單的賦值和保存操作其實內里大有乾坤,可以觸發很多處理甚至事件。
save方法的返回值不是自增主鍵的值(和Db的execute方法一樣返回影響的記錄數),要獲取自增主鍵的值可以使用下面的方式:
~~~
$user = new User;
$user->name = 'thinkphp';
$user->email = 'thinkphp@qq.com';
$user->save();
// 獲取用戶的主鍵數據
echo $user->id;
~~~
可以使用靜態方法創建數據
~~~
$user = User::create([
'name' => 'thinkphp',
'email' => 'thinkphp@qq.com',
]);
echo $user->id;
echo $user->name;
~~~
和save方法不同,create方法的返回值是User模型的對象實例,而save方法調用的時候本身就在對象實例里面。
很多開發者不習慣靜態調用,這里必須說明的是模型類的靜態CURD操作其實都是內部自動實例化而已,所以說白了提供的這些靜態操作方法只是對動態CURD操作方法的靜態封裝罷了。
#### 創建操作用法小結
| 方法 | 返回值 |
| --- | --- |
| save(動態)| 影響的記錄數 |
| create(靜態) | 模型對象實例 |