首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

ThinkPHP 3.1 數據 CURD 操作快速入門:創建、讀取、更新、刪除完整流程與模型最佳實踐

     編輯:PHP 綜合知識

1. CURD 概述

ThinkPHP 對應方法:add(創建)、save(更新)、select/find(讀取)、delete(刪除)。

2. 創建數據(表單提交完整流程)

模板 Tpl/Form/add.html

<FORM method="post" action="__URL__/insert">
標題:<INPUT type="text" name="title"><br/>
內容:<TEXTAREA name="content" rows="5" cols="45"></TEXTAREA><br/>
<INPUT type="submit" value="提交">
</FORM>

控制器 Action/FormAction.class.php

class FormAction extends Action {
    public function insert() {
        $Form = D('Form');
        if ($Form->create()) {                    // 1. 創建數據對象(自動驗證/完成)
            $result = $Form->add();               // 2. 寫入數據庫
            if ($result) $this->success('操作成功!');
            else $this->error('寫入錯誤!');
        } else {
            $this->error($Form->getError());      // 驗證失敗提示
        }
    }
}

模型 Lib/Model/FormModel.class.php

class FormModel extends Model {
    protected $_validate = [
        ['title', 'require', '標題必須'],
    ];
    protected $_auto = [
        ['create_time', 'time', 1, 'function'],  // 自動寫入時間戳
    ];
}

兩步創建優勢: create() 一行處理復雜表單數據、自動驗證補充、安全預處理;add() 專注寫入。主鍵自增時 add() 返回新 ID,否則返回影響行數。

3. 讀取數據

public function read($id=0) {
    $Form = M('Form');                    // 僅需基礎查詢,用 M 更輕量
    $data = $Form->find($id);             // 讀取單條(主鍵查詢)
    if ($data) {
        $this->data = $data;              // 模板變量賦值
        $this->display();
    } else {
        $this->error('數據錯誤');
    }
}

模板輸出:{$data.id} {$data.title} {$data.content}。
單字段讀取:$title = M('Form')->where('id=3')->getField('title');

4. 更新數據

編輯模板 edit.html(含隱藏主鍵)

<FORM method="post" action="__URL__/update">
標題:<INPUT type="text" name="title" value="{$vo.title}"><br/>
內容:<TEXTAREA name="content">{$vo.content}</TEXTAREA><br/>
<INPUT type="hidden" name="id" value="{$vo.id}">
<INPUT type="submit" value="提交">
</FORM>

控制器方法

public function edit($id=0) {
    $Form = M('Form');
    $this->vo = $Form->find($id);
    $this->display();
}
public function update() {
    $Form = D('Form');                    // 需驗證/完成,用 D
    if ($Form->create()) {
        $result = $Form->save();          // 自動識別主鍵更新
        if ($result) $this->success('操作成功!');
        else $this->error('寫入錯誤!');
    } else {
        $this->error($Form->getError());
    }
}

非表單更新寫法

$Form = M('Form');
$data['id'] = 5; $data['title'] = 'ThinkPHP'; $data['content'] = '...';
$Form->save($data);                       // 或
$Form->where('id=5')->save($data);        // 顯式條件
// 統計字段增減
$User->where('id=5')->setInc('score', 3); // +3
$User->where('id=5')->setDec('score', 5); // -5

5. 刪除數據

$Form = M('Form');
$Form->delete(5);                         // 主鍵刪除
$Form->delete('1,2,5');                   // 批量主鍵
$Form->where('id=5')->delete();           // 條件刪除
$User->where('status=0')->delete();       // 批量條件
// 返回影響行數,false 表示 SQL 錯誤,0 表示無數據刪除
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved