項目中多次用到create() 只能它是表單驗證,不過好出錯,痛下心扉好好了解理解它的來龍去脈和所用的用法
一:通過create() 方法或者 賦值的方法生成數據對象,然後寫入數據庫
$model = D('User');
$model->create(); //略過具體的自動生成和驗證判斷
$model->add()
1:create()方法還支持其他方式創建數據對象:如,其他的數據對象或者數組
$data['name'] = 'Mike'; 2 $data['sex'] = 'male'; 3 $user->create($data);
2: 創建完成的數據可以直接讀取和修改
3: create的第二個操作方法可以指定創建數據的操作狀態,默認是自動判斷是寫入還是更新操作
4: 如果沒有定義自動驗證的話,create方法返回值是創建完成的數據對象數組
5:create方法創建的數據對象時保存在內存中,並沒有實際寫入到數據庫中,直到使用add或則save方法纔會真正寫入到數據庫
二:用於寫入:field()和create()結合使用,檢測字段的合法性(表單提交)
$model->field('title,email,content')->create();
合法字段只有title,email,content,無論用戶通過什麼手段添加其他字段都會屏蔽掉。
三:自動驗證,是模型層提供的一種數據驗證方法,create創建數據對象的時候自動進行數據驗證:具體分爲靜態和動態方式
四:create() 在創建數據對象的同時,完成一系列的工作,工作流程
步驟 | 說明 | 返回 |
1 | 獲取數據源(默認是POST數組) | |
2 | 驗證數據源合法性(非數組或者對象會過濾) | 失敗返回false |
3 | 檢查字段映射 | |
4 | 判斷數據狀態(新增或者編輯,指定或者自動判斷) | |
5 | 數據自動驗證 | 失敗返回false |
6 | 表單令牌驗證 | 失敗返回false |
7 | 表單數據賦值(過濾非法字段和字符串處理) | |
8 | 數據自動完成 | |
9 | 生成數據對象(保存在內存) |