ThinkPHP的增、刪、改、查
一、建立操作
在ThinkPHP使用add方法新增資料到資料庫。
使用方法如下:
$User = M("User"); // 例項化User物件
$data['name'] = 'ThinkPHP';
$data['email'] = 'ThinkPHP@gmail.com';
$User->add($data);
或者使用data方法連貫操作
$User->data($data)->add();
如果在add之前已經建立資料物件的話(例如使用了create或者data方法),add方法就不需要再傳入資料了。
使用create方法的例子:
$User = M("User"); // 例項化User物件
// 根據表單提交的POST資料建立資料物件
$User->create();
$User->add(); // 根據條件儲存修改的資料
如果你的主鍵是自動增長型別,並且如果插入資料成功的話,Add方法的返回值就是最新插入的主鍵值,可以直接獲取。
二、讀取資料
在ThinkPHP中讀取資料的方式很多,通常分為讀取資料和讀取資料集。
讀取資料集使用findall或者select方法(findall和select方法等效):
$User = M("User"); // 例項化User物件
// 查找status值為1的使用者資料以建立時間排序返回10條資料
$list = $User->where('status=1')->order('create_time')->limit(10)->select();
select方法的返回值是一個二維陣列,如果沒有查詢到任何結果的話,也是返回一個空的陣列。配合上面提到的連貫操作方法可以完成複雜的資料查詢。而最複雜的連貫方法應該是where方法的使用,因為這部分涉及的內容較多,我們會在查詢語言部分就如何進行組裝查詢條件進行詳細的使用說明。基本的查詢暫時不涉及關聯查詢部分,而是統一採用關聯模型來進行資料操作,這一部分請參考關聯模型部分。
讀取資料使用find方法:
讀取資料的操作其實和資料集的類似,select可用的所有連貫操作方法也都可以用於find方法,區別在於find方法最多隻會返回一條記錄,因此limit方法對於find查詢操作是無效的。
$User = M("User"); // 例項化User物件
// 查找status值為1name值為think的使用者資料
$User->where('status=1 AND name="think" ')->find();
即使滿足條件的資料不止一條,find方法也只會返回第一條記錄。
如果要讀取某個欄位的值,可以使用getField方法,例如:
$User = M("User"); // 例項化User物件
// 獲取ID為3的使用者的暱稱
$nickname = $User->where('id=3')->getField('nickname');
當只有一個欄位的時候,始終返回一個值。
如果傳入多個欄位的話,可以返回一個關聯陣列:
$User = M("User"); // 例項化User物件
// 獲取所有使用者的ID和暱稱列表
$list = $User->getField('id,nickname');
返回的list是一個陣列,鍵名是使用者的id, 鍵值是使用者的暱稱nickname。
三、更新資料
在ThinkPHP中使用save方法更新資料庫,並且也支援連貫操作的使用。
$User = M("User"); // 例項化User物件
// 要修改的資料物件屬性賦值
$data['name'] = 'ThinkPHP';
$data['email'] = 'ThinkPHP@gmail.com';
$User->where('id=5')->save($data); // 根據條件儲存修改的資料
為了保證資料庫的安全,避免出錯更新整個資料表,如果沒有任何更新條件,資料物件本身也不包含主鍵欄位的話,save方法不會更新任何資料庫的記錄。
因此下面的程式碼不會更改資料庫的任何記錄
$User->save($data);
除非使用下面的方式:
$User = M("User"); // 例項化User物件
// 要修改的資料物件屬性賦值
$data['id'] = 5;
$data['name'] = 'ThinkPHP';
$data['email'] = 'ThinkPHP@gmail.com';
$User->save($data); // 根據條件儲存修改的資料
如果id是資料表的主鍵的話,系統自動會把主鍵的值作為更新條件來更新其他欄位的值。
還有一種方法是通過create或者data方法建立要更新的資料物件,然後進行儲存操作,這樣save方法的引數可以不需要傳入。
$User = M("User"); // 例項化User物件
// 要修改的資料物件屬性賦值
$data['name'] = 'ThinkPHP';
$data['email'] = 'ThinkPHP@gmail.com';
$User->where('id=5')->data($data)->save(); // 根據條件儲存修改的資料
使用create方法的例子:
$User = M("User"); // 例項化User物件
// 根據表單提交的POST資料建立資料物件
$User->create();
$User->save(); //根據條件儲存要修改的資料
上面的情況,表單中必須包含一個以主鍵為名稱的隱藏域,才能完成儲存操作。
如果只是更新個別欄位的值,可以使用setField方法:
$User = M("User"); // 例項化User物件
// 更改使用者的name值
$User-> where('id=5')->setField('name','ThinkPHP');
setField方法支援同時更新多個欄位,只需要傳入陣列即可,例如:
$User = M("User"); // 例項化User物件
// 更改使用者的name和email的值
$User-> where('id=5')->setField(array('name','email'),array('ThinkPHP','ThinkPHP@gmail.com'));
而對於統計欄位(通常指的是數字型別)的更新,系統還提供了setInc和setDec方法:
$User = M("User"); // 例項化User物件
$User->setInc('score','id=5',3);// 使用者的積分加3
$User->setInc('score','id=5'); // 使用者的積分加1
$User->setDec('score','id=5',5);// 使用者的積分減5
$User->setDec('score','id=5'); // 使用者的積分減1
四、刪除資料
在ThinkPHP中使用delete方法刪除資料庫中的記錄。同樣可以使用連貫操作進行刪除操作。
$User = M("User"); // 例項化User物件
$User->where('id=5')->delete(); // 刪除id為5的使用者資料
$User->where('status=0')->delete(); // 刪除所有狀態為0的使用者資料
delete方法可以用於刪除單個或者多個資料,主要取決於刪除條件,也就是where方法的引數,也可以用order和limit方法來限制要刪除的個數,例如:
// 刪除所有狀態為0的5個使用者資料按照建立時間排序
$User->where('status=0')->order('create_time')->limit('5')->delete();
相關文章
- 用thinkphp進行增刪改查的操作PHP
- 增刪改查
- layui的增刪改查UI
- 列表的增刪改查
- 字典的增刪改查
- redist的增刪改查Redis
- Mybatis的增刪改查MyBatis
- MongoDB的增刪改查MongoDB
- indexedDB 增刪改查Index
- SQL增刪改查SQL
- mysql增刪改查MySql
- Mongoose查增改刪Go
- FMDB增刪改查
- mysql增查刪改MySql
- sql指令,增,刪,查,改SQL
- EFCore之增刪改查
- mysql基本增刪改查MySql
- MongoDB增刪改查操作MongoDB
- mongodb 基本增刪改查MongoDB
- 02-CoreData 的增刪改查
- 增刪改查框架的疑問框架
- 修改thinkphp的主頁面,連線資料庫,實現增刪改查PHP資料庫
- Elasticsearch增刪改查 之 —— Delete刪除Elasticsearchdelete
- elasticsearch7.2增刪改查Elasticsearch
- SQL 基礎增、刪、改、查SQL
- iOS CoreData (一) 增刪改查iOS
- CoreData - 簡單 增刪改查
- [express+mongoose](增刪改查)ExpressGo
- rust sqlx 使用---增刪改查RustSQL
- PHP操作MongoDB(增刪改查)PHPMongoDB
- JavaWeb中jdbc增刪查改JavaWebJDBC
- sql 常見增刪改查SQL
- Hibernate--增刪改查
- C# SqlSugar增刪改查C#SqlSugar
- MySQL表的增刪查改(提高篇)MySql
- js實現表格的增刪改查JS
- 字典,元組,集合的增刪改查
- MySQL表的增刪改查(基礎)MySql