1. 程式人生 > >【三十四】thinkphp之curd操作

【三十四】thinkphp之curd操作

傳遞 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的區別:

  1. field():用於定義要查詢的字段
  2. 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操作