學習ThinkPHP 模型中的 CURD 操作,也就是增刪改查。通過 CURD, 我們可以方便快速的對數據庫進行操作。
1.數據創建 2.數據寫入 3.數據讀取 4.數據更新 5.數據刪除
一.數據創建 在數據庫添加等操作之前,我們首先需要對數據進行創建。何為數據創建,就是接受提 交過來的數據,比如表單提交的 POST(默認)數據。接受到數據后,還可以對數據進行有 效的驗證、完成、生成等工作。
//根據表單提交的POST數據,創建數據對象 $user = M('User'); var_dump($user->create()); PS:這里 create()方法就是數據創建,數據的結果就是提交的 POST 數據的鍵值對。
特別注意的是:提交過來的字段和數據表字段是對應的,否則無法解析。
//通過數組手工獲取數據,覆蓋提交的 $user = M('User'); $data['user'] = $_POST['user']; $data['email'] = $_POST['email']; $data['date'] = date('Y-m-d H:i:s');
//和數據表對應,否則無效 var_dump($user->create($data));
//通過對象手工獲取數據,覆蓋提交的 $user = M('User'); $data = new \stdClass(); $data->user = $_POST['user']; $data->email = $_POST['email']; $data->date = date('Y-m-d H:i:s'); var_dump($user->create($data));
//默認是$_POST,傳遞$_GET修改 $user = M('User'); var_dump($user->create($_GET)); create()方法可以傳遞第二個參數,將要操作的模式,有兩種:Model::MODEL_INSERT 和 Model::MODEL_UPDATE,即新增和修改。當沒有指定的時候,系統會根據數據源是否包 含主鍵來自動判斷,如果包含主鍵,則就是修改操作。
//設置將要新增操作 $user = M('User'); var_dump($user->create($_POST, Model::MODEL_INSERT));
create()方法的內部工作分為 9 步:
1.獲取數據源(默認是 POST);2.驗證數據合法性(非數據或對象會過濾),失敗則返回 false;3.檢查字段映射;4.判斷數據狀態(新增還是修改);5.數據自動驗證,失敗則返回 false;6.表單令牌驗證,失敗則返回 false;7.表單數據賦值(過濾非法字段和字符串處理);8.數據自動完成;9.生成數據對象(保存在內存)。
create()方法可以配合連貫操作配合數據創建,支持的連貫操作有:
1.field,用于定義合法的字段; var_dump($user->field('user')->create());2.validate,用于數據自動驗證;3.auto,用于數據自動完成;4.token,用于令牌驗證。//限制可操作的字段 $user = M('User'); var_dump($user->field('user')->create());//在模型類里限制字段 class UserModel extends Model { protected $insertFields = 'user'; protected $updateFields = 'user'; }
?
二.數據寫入 數據寫入使用的是 add()方法。
//新增一條數據 $user = M('User'); $data['user'] = '李炎恢'; $data['email'] = 'yc60.com@gmail.com'; $data['date'] = date('Y-m-d H:i:s'); $user->add($data);
//結合create()方法 $user = M('User'); $data = $user->create(); $data['date'] = date('Y-m-d H:i:s'); $user->add($data); add()方法支持的連貫操作有:
1.table,定義數據表名稱;
2.data,指定要寫入的數據對象;
3.field,定義要寫入的字段;
4.relation,關聯查詢;
5.validate,數據自動驗證;
6.auto,數據自動完成;
7.filter,數據過濾;
8.scope*,命名范圍;
9.bind,數據綁定操作;
10.token,令牌驗證;
11.comment,SQL 注釋; //使用data連貫方法 $user = M('User'); $data = $user->create(); $data['date'] = date('Y-m-d H:i:s'); $user->data($data)->add(); //data連貫方法 支持字符串、數組、對象 $user = M('User'); $data = 'user=星矢&mail=xinshi@qq.com&date='.date('Y-m-d H:i:s'); $user->data($data)->add();?