【三十四】thinkphp之curd操作
阿新 • • 發佈:2018-01-20
傳遞 nfa ace meta png 設置 顯示 logs 對象
1.數據創建(create)
接受提交過來的數據,比如表單提交的 POST(默認)數據。接受到數據後,還可以對數據進行有效的驗證、完成、生成等工作
// 這裏 create()方法就是數據創建,數據的結果就是提交的 POST 數據的鍵值對。 // 特別註意的是:提交過來的字段和數據表字段是對應的,否則無法解析 //根據表單提交的POST數據,創建數據 var_dump($user->create());
通過$_post接收數據
//通過數組手工獲取數據,覆蓋提交的 $data[‘name‘]=‘qqq‘; $data[‘password‘]="456";$data[‘email‘]="[email protected]"; $data[‘age‘]=52; var_dump($user->create($data)); //通過對象手工獲取數據,覆蓋提交的 $data=new \stdClass(); $data->name=$_POST[‘name‘]; $data->password=$_POST[‘password‘]; $data->email=$_POST[‘email‘]; $data->age=$_POST[‘age‘];var_dump($user->create($data)); // 默認是$_POST,傳遞$_GET修改 var_dump($user->create($_GET));
create()方法可以傳遞第二個參數,將要操作的模式,有兩種:Model::MODEL_INSER和 Model::MODEL _UPDATE,即新增和修改。當沒有指定的時候,系統會根據數據源是否包含主鍵來自動判斷,如果包含主鍵,則就是修改
操作
// 設置將要新增操作 var_dump($user->create($_POST,Model::MODEL_INSERT));
//限制可操作的字段 // 提交過來的數據只會接收name字段的值 var_dump($user->field(‘name‘)->create());
2.數據寫入(add)
數據寫入使用的是 add()方法。
//新增一條數據 // sql:INSERT INTO `user1` (`name`,`password`,`email`,`age`) VALUES (‘caiminfang‘,‘123‘,‘[email protected]‘,15) $user=M(‘user1‘); $data[‘name‘]=‘caiminfang‘; $data[‘password‘]="123"; $data[‘email‘]="[email protected]"; $data[‘age‘]=15; $user->add($data); // 結合create()方法 // INSERT INTO `user1` (`name`,`password`,`email`,`age`) VALUES (‘cmfcmf‘,‘456‘,‘[email protected]‘,18)
$data $user->create(); $data[‘name‘]=$_POST[‘name‘]; $data[‘password‘]=$_POST[‘password‘]; $data[‘email‘]=$_POST[‘email‘]; $data[‘age‘]=$_POST[‘age‘]; $user->add($data);
//INSERT INTO `user1` (`name`) VALUES (‘asdasd‘) //使用data連貫操作 $user=M(‘user1‘); $data=$user->create(); $data[‘name‘]=‘asdasd‘; var_dump($user->data($data)->add()); // data連貫方法,支持字符串、數組、對象 // INSERT INTO `user1` (`name`,`password`,`email`,`age`) VALUES (‘xingshi‘,‘123‘,‘[email protected]‘,55) $data=‘name=xingshi&password=123&[email protected]&age=55‘; $user->data($data)->add();
3.數據讀取(select)
支持連貫方法的有:http://www.cnblogs.com/8013-cmf/p/8317720.html(請閱讀此篇文章)
field和getField的區別:
- field():用於定義要查詢的字段
- getField():用於查詢某個字段的值
$user=M(‘user1‘); //顯示所有數據 // SELECT * FROM `user1` var_dump($user->select()); //顯示默認第一條數據 // SELECT * FROM `user1` LIMIT 1 var_dump($user->find()); // 獲取第一條name字段的值 // SELECT `name` FROM `user1` LIMIT 1 var_dump($user->getField(‘name‘)); // 獲取所有user字段的name值 // SELECT `name` FROM `user1` var_dump($user->getField(‘name‘,true)); //獲取所有user的name值和email值 // SELECT `name`,`email` FROM `user1` var_dump($user->getField(‘name,email‘)); //以冒號分隔 // SELECT `name`,`email`,`age` FROM `user1` var_dump($user->getField(‘name,email,age‘,":")); //限制2條數據 //SELECT `name`,`email` FROM `user1` LIMIT 2 var_dump($user->getField(‘name,email‘,2));
4.數據更新(save)
主要是對數據的修改操作。
$user=M(‘user1‘); //修改數據 // UPDATE `user1` SET `name`=‘zxczxc‘ WHERE `id` = 4 $data[‘name‘]="zxczxc"; $map[‘id‘]=4; $user->where($map)->save($data); //默認主鍵為條件 // UPDATE `user1` SET `name`=‘hello‘ WHERE `id` = 3 $data[‘id‘]=3; $data[‘name‘]="hello"; $user->save($data);
結合create使用save
index.html
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <form method="post" action="http://localhost/basic_thinkphp/index.php/Home/Model/save"> <!-- 必須要定義id的默認值 --> <input type="hidden" name="id" value="3"> 用戶名:<input type="text" name="name"><br/> 密碼:<input type="text" name="password"><br/> 郵箱:<input type="text" name="email"><br/> 年齡:<input type="text" name="age"><br/> <input type="submit" value="提交"> </form> </body> </html>
ModelController.class.php
<?php namespace Home\Controller; use Think\Controller; use Think\Model; use Think\stdClass; class ModelController extends Controller { public function save(){ $user=M(‘user1‘); // 結合create // UPDATE `user1` SET `name`=‘test1‘,`password`=‘456‘,`email`=‘[email protected]‘,`age`=88 WHERE `id` = 3 $user->create(); //post必須包含主鍵,我是在前端定義的 $user->save(); } }
$user=M(‘user1‘); // 修改某一個值 // UPDATE `user1` SET `name`=‘labixiaoxin‘ WHERE `id` = 3 $map[‘id‘]=3; $user->where($map)->setField(‘name‘,‘labixiaoxin‘); //統計累計,累加累減 // UPDATE `user1` SET `age`=age+1 WHERE `id` = 3 $map[‘id‘]=3; $user->where($map)->setInc(‘age‘,1);
5.數據刪除(delete)
$user=M(‘user1‘); // 直接刪除主鍵(id=8) // DELETE FROM `user1` WHERE `id` = 8 $user->delete(8); //根據id刪除 // DELETE FROM `user1` WHERE `id` = 47 $map[‘id‘]=47; $user->where($map)->delete(); //批量刪除多個 // DELETE FROM `user1` WHERE `id` IN (‘45‘,‘46‘) $user->delete("45,46"); //刪除年齡為16且按照id倒序的前2個 // DELETE FROM `user1` WHERE `age` = 16 ORDER BY `id` DESC LIMIT 2 $map[‘age‘]=16; $user->where($map)->order(array(‘id‘=>‘DESC‘))->limit(2)->delete(); // 刪除所有數據 echo $user->where(‘1‘)->delete();
6.ActiveReocrd 模式
這種模式最大的特別就是簡化了 CURD 的操作,並且采用對象化的操作方式,便於使用和理解。
// 添加一條數據 $user = M(‘User‘); $user->user = ‘火影忍者‘; $user->email = ‘[email protected]‘; $user->date = date(‘Y-m-d H:i:s‘); $user->add(); //結合create $user = M(‘User‘); $user->create(); $user->date = date(‘Y-m-d H:i:s‘); $user->add(); //找到主鍵為4的值 $user = M(‘User‘); var_dump($user->find(4)) //查找user=蠟筆小新的記錄 $user = M(‘User‘); var_dump($user->getByUser(‘蠟筆小新‘)); //輸出userecho $user->user; //通過主鍵查詢多個 $user = M(‘User‘); var_dump($user->select(‘1,2,3‘)); //修改一條數據 $user = M(‘User‘); $user->find(1); $user->user = ‘蠟筆老新‘; $user->save(); //刪除當前找到的數據 $user = M(‘User‘); $user->find(11); $user->delete(); //刪除主鍵為10的數據 $user = M(‘User‘); $user->delete(10); //刪除主鍵為10,11的數據 $user = M(‘User‘); $user->delete(‘10,11‘
【三十四】thinkphp之curd操作