新增單條數據:save( )方法
1. 功能:向指定數據表中添加一條記錄
該方法每次僅能向表中添加一條新記錄,添加多條可重復執行,不過后面要學習的saveAll()可一次性添加多條
2. 源碼:/thinkphp/library/think/Model.php
save方法是Model類中較復雜的方法之一,因為save方法身兼多職,不僅用于新增,還可以用于更新數據。
4. 基本語法:
格式1:將數據直接寫在save方法參數中
~~~
模型對象 -> save(數組);
~~~
格式2:先生成數據對象,然后用save方法直接寫入表中
~~~
模型對象 -> data(數組) -> save();
~~~
這二種語法都可以完成新增操作。但是第二種語法結構更加清晰,可讀性好,修改更加方便。
~~~
<?php
namespace app\index\controller;
use app\index\model\Staff;
class Index {
public function index(){
//1.創建數據:與表中字段對應
$data = [];
$data['name'] = '周星星';
$data['sex'] = 1;
$data['age'] = 39;
$data['salary'] = 3500;
$data['dept'] = 3;
$data['hiredate'] = date('Y-m-d',time());
//2.創建數據對象
$model = (new Staff())-> data($data);
//3.獲取新增操作執行前:數據對象原始數據
$data_before = $model -> getData();
//4.查看新增操作執行前的數據對象:$model
echo '查看新增操作執行前的數據對象:<br />';
dump($data_before);
//5.將數據對象原始數據寫入數據表中,返回影響記錄數
//allowField(true)過濾post數組中的非數據表字段數據
$affected = $model -> allowField(true) -> save();
//6.獲取新增操作執行后:數據對象原始數據
$data_after = $model -> getData();
//7.查看新增操作執行后的數據對象:$model
echo '查看新增操作執行后的數據對象:<br />';
dump($data_after);
//8. 獲取新增記錄的主鍵id,等價于: $model -> id
$insert_ID = $affected ? $data_after['id'] : null;
//6.驗證是否新增成功
echo $affected ? '新增成功!新記錄主鍵id是:'.$insert_ID : '新增失敗!';
}
}
~~~
save()方法
~~~
class Index {
public function index(){
//1.創建數據:與表中字段對應
$data = [];
$data['name'] = '周星星';
$data['sex'] = 1;
$data['age'] = 39;
$data['salary'] = 3500;
$data['dept'] = 3;
$data['hiredate'] = date('Y-m-d',time());
$model = new Staff();
$affected = $model -> allowField(true) -> save($data);
$data['name'] = '周星星';
$data['sex'] = 1;
$data['age'] = 39;
$data['salary'] = 3000;
$data['dept'] = 3;
$data['hiredate'] = date('Y-m-d',time());
$affected = $model -> allowField(true)
-> setAttr('id',null) //清空ID
-> isUpdate(false) //顯式指定新增
-> save($data);
~~~
* * * * *
參考鏈接:http://www.hmoore.net/ldkt/tp5_model/237110
- 目錄
- 5.0.10環境配置
- 5.0.10控制器模型對象
- 5.0.10模型初始化
- 5.0.10定義數據對象
- 5.0.10創建數據對象data()方法
- 5.0.10創建數據對象-setAttr方法
- 5.0.10創建數據對象__set()方法
- 5.0.10查詢數據對象getData()
- 實例
- 5.0.10保存數據save()方法
- 5.0.10保存數據saveAll()
- 5.0.10更新數據save()
- 5.0.10批量更新數據saveAll()
- 5.0.10刪除數據delete()
- 5.0.10刪除數據destroy()
- 5.0.10traits詳解
- ThinkPHP 5.0 速查表
- 注釋
- 環境變量配置
- Model分層
- MVC 邏輯服務數據
- Model分層及多對多關聯的建立
- 控制器調用邏輯層
- Session
- 子域名session共享
- 系統錯誤
- 版本錯誤
- 返回錯誤
- Token令牌及身份識別
- 關聯查詢
- 安裝
- Git安裝
- Composer
- 擴展
- Composer類
- 非Composer類
- 引用第三方庫
- 自定義命令行
- 計劃任務
- 調試
- 調試模式
- 監聽SQL
- 數據庫調試
- 單元測試
- 初始化
- 控制器初始化
- 模型初始化
- 數據緩存
- 實戰
- 版本升級
- 從V5.0.17升級到V5.0.18