專案中多次用到create() 只能它是表單驗證,不過好出錯,痛下心扉好好了解理解它的來龍去脈和所用的用法
一:透過create() 方法或 賦值的方法產生資料對象,然後寫入資料庫
<span>1</span> <span>$model</span> = D('User'<span>); </span><span>2</span> <span>$model</span>->create(); <span>//</span><span>略过具体的自动生成和验证判断</span> <span>3</span> <span>$model</span>->add()
1:create()方法也支援其他方式建立資料物件:如,其他的資料物件或陣列
1 $data['name'] = 'Mike'; 2 $data['sex']2 $data[45] = ' ($data); 2: 建立完成的資料可以直接讀取和修改
3: create的第二個操作方法可以指定建立資料的操作狀態,預設是自動判斷是寫入還是更新操作
4: 如果沒有定義自動驗證的話,create方法回傳值是建立完成的資料物件陣列
5:create方法建立的資料物件時保存在記憶體中,並沒有實際寫入資料庫中,直到使用add或則save方法才會真正寫入資料庫
二:用於寫入:field()和create()結合使用,檢測字段的合法性(表單提交)
1 $model->field('title,email,content')->create(); 合法欄位只有title,email,content,無論使用者透過什麼手段加入其他欄位都會封鎖。
三:自動驗證,是模型層提供的一種資料驗證方法,create建立資料物件的時候自動進行資料驗證:具體分為靜態和動態方式
四:create() 在建立資料物件的同時,完成一系列的工作,工作流程
說明 | 回 | |
取得資料來源(預設是POST陣列) | ||
驗證資料來源合法性(非數組或物件會過濾) | 失敗回傳false | |
檢查字段映射 | ||
判斷資料狀態(新增或編輯,指定或自動判斷) | ||
資料自動驗證 | 失敗回傳false | |
表單令牌驗證 | 失敗回傳false | |
表單資料賦值(過濾非法欄位和字串處理) | ||
資料自動完成 | ||
產生資料物件(保存在記憶體) |