ThinkPHP 對應方法:add(創建)、save(更新)、select/find(讀取)、delete(刪除)。
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.phpclass 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.phpclass FormModel extends Model {
protected $_validate = [
['title', 'require', '標題必須'],
];
protected $_auto = [
['create_time', 'time', 1, 'function'], // 自動寫入時間戳
];
}
兩步創建優勢: create() 一行處理復雜表單數據、自動驗證補充、安全預處理;add() 專注寫入。主鍵自增時 add() 返回新 ID,否則返回影響行數。
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');
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
$Form = M('Form');
$Form->delete(5); // 主鍵刪除
$Form->delete('1,2,5'); // 批量主鍵
$Form->where('id=5')->delete(); // 條件刪除
$User->where('status=0')->delete(); // 批量條件
// 返回影響行數,false 表示 SQL 錯誤,0 表示無數據刪除