摘要:數據庫操作數據庫連接在設置數據庫連接參數或者利用方法設置數據庫連接數據庫初始化,并取得數據庫類實例數據庫配置信息數組,可以在該方法里面進行配置數據庫查找直接操作語句描述查詢語句,然后類型語句字符串語句中綁定的字符串常用查詢語句返回所有記錄,
ThinkPHP
數據庫操作
數據庫連接
#在config/database.php設置數據庫連接參數或者利用Db::connect()方法設置數據庫連接 /* * public static function connect($config = [], $name = false) * 數據庫初始化,并取得數據庫類實例 * $config:數據庫配置信息數組,可以在該方法里面進行配置 */ # var_dump(Db::connect());
數據庫查找
query:直接操作sql語句
/* * mixed query(string $sql, array $bind = [], boolean $master = false, bool $pdo = false) * 描述:SQL查詢語句,然后array類型 * $sql:SQL語句字符串 * $bind:SQL語句中綁定的字符串 */ $res = Db::query("select * from book where id=?", [1001]);
常用查詢語句
# select 返回所有記錄,返回的結果是一個二維數組 # 如果結果不存在,返回一個空數組"[]" $res = Db::table("book") ->where([ "id" => "1001" ])->select(); $res = db("book") ->where([ "id" => "1001" ])->select(); #功能同上 # find 返回一條記錄,返回的結果是一個一維數組 # 如果結果不存在,返回null $res = Db::table("book") ->where([ "id" => "1002" ])->find(); $res = db("book") ->where([ "id" => "1001" ])->find(); #功能同上 # value 返回一條記錄,并且是這條記錄的某個字段值 # 如果結果不存在,返回null $res = Db::table("book") ->where([ "id" => "1001" ])->value("name"); $res = db("book") ->where([ "id" => "1001" ])->value("name"); #功能同上 # column 返回一個一緯數組,數組中的value值就是我們要獲取列的值 # 如果結果不存在,返回空數組"[]" $res = Db::table("book") -> where([ "id" => "1001" ]) -> column("name"); $res = db("book") ->where([ "id" => "1001" ])->column("name"); #功能同上
數據庫添加
execute:直接操作sql語句
/* * integer execute(string $sql, array $bind = [], boolean $fetch = false, boolean $getLastInsID = false, string $sequence = null) * 描述:SQL更新語句 * $sql:SQL語句字符串 * $bind:SQL語句中綁定的字符串 */ $res = Db::execute("select * from book where id=?", [1002]);
常用插入語句
public function insert() { //指定數據庫表,獲取表資源 $db = Db::name("book"); # $db ->insert():插入單條記錄,返回是影響記錄的行數 # $db ->insertGetId():插入單條記錄,返回的是插入記錄的id # $db ->insertAll():批量插入 //inset 返回值是影響記錄的行數,插入數 $res = $db ->insert([ "id" => "1005", "name" => "書籍5", "type_id" => "1", "author" => "趙六", "press" => "牛津大學出版社" ]); dump($res); }
數據庫更新
public function update() { //指定數據庫表 $db = Db::name("book"); # $db->update() # 更新記錄某一個或幾個字段,返回值為影響記錄的行數 $res = $db ->where([ "id" => 1001 ])->update([ "author" => "比克" ]); # $db->setField() # 更新記錄下某一個字段的值,返回值為影響記錄的行數 $res = $db ->where([ "id" => 1001 ])->setField("name", "書籍111"); # $db->setInc() # 更新記錄下某一個字段按固定步長增長,返回值為影響記錄的行數 $res = $db ->where([ "id" => 1001 ]) ->setInc("type_id", "2"); # $db->setDec() # 更新記錄下某一個字段按固定步長減小,返回值為影響記錄的行數 $res = $db ->where([ "id" => 1001 ]) ->setDec("type_id", "2"); dump($res); }
數據庫刪除
public function delete() { //指定數據庫表 $db = Db::name("book"); #返回值為影響記錄的行數 $res = $db->where([ "id" => 1001 ])->delete(); #如果where條件中是主鍵,則可以寫為: $res = $db->delete("1002"); dump($res); }
鏈式操作
$res3 = Db::table("book") -> where("id", ">", "1004") #查詢條件where($field, $op, $condition) -> field("name, press") #過濾條件field -> order("id DESC") #排序方式order,DESC降序,ASC升序 # -> limit(3, 5) #記錄條數限制limit # -> page(2,5) #分頁功能page -> group("press") #分組group -> select();
模型
獲取model對象
public function requireModel() { #方式1:使用助手函數獲取model實例對象 $book = model("Book"); $book1 = $book::get("1001"); #方式2:使用Loader獲取model實例對象 $book = Loader::model("Book"); $book2 = $book::get("1001"); #方式3:使用new方法獲取實例對象 $book = new Book(); $book3 = $book::get("1001"); #方式4:靜態方法直接獲取實例對象(推薦使用) $book4 = Book::get(1001); dump($book1->toArray()); dump($book2->toArray()); dump($book3->toArray()); dump($book4->toArray()); }
模型查詢數據
public function getBook($bookId) { #get進行查找單條記錄 $book = Book::get($bookId); #方法1 $book = Book::get(function ($query){ #方法2 $query->where("id", ">", 1001) ->field("name"); }); $name = $book->name; #調用模型的屬性 $res = $book->toArray(); #將模型轉換為數組 #get獲取批量記錄 $books = Book::all(); $book = Book::all(function ($query){ #方法2 $query->where("id", ">", 1001) ->field("name"); }); foreach ($books as $value) { #遍歷循環打印 #dump($value->toArray()); } #和Db相似的鏈式方法:find()方法查找單條記錄 $res = Book::where("id", "=", "1001") ->field("name, author") ->find(); #dump($res->toArray()); #select()方法查找多條記錄 $res = Book::where("id", ">", "1001") ->field("name, author") ->select(); foreach ($res as $value) { #遍歷循環打印 #dump($value->toArray()); } #value():獲取單條記錄某個字段的值 $res = Book::value("press"); #column():所有多條記錄某個字段的值 $res = Book::column("press", "press"); dump($res); }
模型添加數據
public function insertBook($bookId) { #方式1:Book::create插入單條數據 $book = Book::create([ "id" => $bookId, "name" => "書籍21", "type_id" => 1, "author" => "作者{$bookId}", "press" => "清華大學出版社" ]); #方式2:save()插入單條數據 $book = new Book(); $book->id = 1000 + (integer)($bookId); $book->name = "書籍{$bookId}"; $book->type_id = 1; $book->author = "作者{$bookId}"; $book->press = "清華大學出版社"; $book->save(); $book1 = new Book(); #插入快捷方式 $book1->save([ "id" => 1000 + (integer)($bookId), "name" => "書籍{$bookId}", "type_id" => 1, "author" => "作者{$bookId}", "press" => "清華大學出版社" ]); #方式3:saveAll()插入批量數據 $res = $book1 ->saveAll([ [ "name" => "書籍{$bookId}", ], [ "name" => "書籍{$bookId}", ] ]); dump($res); }
模型更新數據
public function updateBook() { //更新數據 $res = Book::update([ "author" => "作者11" ], function ($query){ $query->where("id", "=", "1001"); }); #更新數據 $res = Book::where("id", "=", "1002") ->update([ "author" => "作者22" ]); #通過save()來更新已經有的model $book = Book::get(1001); $book ->author = "作者1"; $book ->save(); dump($book->toArray()); }
模型刪除數據
public function deleteBook() { #Book::destroy() #如果當前表存在主鍵,直接傳值 #$res = Book::destroy(1001); #如果當前表不存在主鍵,則可以根據$query函數進行條件刪除 #$res = Book::destroy(function ($query){ # $query->where("id", "=", "1002"); #}); #通過實例進行刪除 #$book = Book::get(1003); #$res = $book ->delete(); #通過where條件進行刪除 $res = Book::where("id", ">", 1000) ->delete(); dump($res); }
模型聚合操作
class Book extends Model { #屬性和數據庫表字段映射 protected $createTime = "create_time"; protected $updateTime = "update_time"; #獲取器:讀取數據庫中值的時候,在值的基礎上進行修改 public function getSexAttr($var) { switch ($var) { case 0: return "男"; break; case 1: return "女"; break; default: return "未知"; break; } } #修改器:對寫入數據庫中值進行修改 public function setPasswordAttr($var) { return md5($var); } #自動完成功能 protected $auto = [ #數據插入或更新的時候,對字段進行更新 ]; protected $insert = [ #插入時候,對字段進行更新 "create_time" ]; protected $update = [ #更新時候,對字段進行更新 "modify_time" ]; #綁定數據庫中create_time字段 public function setCreateTimeAttr($var) { return time(); } #綁定數據庫中modify_time字段 public function setModifyTimeAttr($var) { return time(); } }
了解:SoftDelete(軟刪除)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/28748.html
摘要:可以在入口文件中定義,然后新建文件夾,達到將應用配置放到該文件的目的,這樣方便將配置進行統一管理。動態配置返回數據類型功能同上張三男請求成功 ThinkPHP5 ThinkPHP是一個免費開源的、快速簡單的、面向對象的、輕量級PHP開發框架。 為什么選擇ThinkPHP5? ThinkPHP5采用了全新的架構思想; 優化了核心是一個顛覆性的版本; 支持composer方式安裝; 對...
摘要:于是我就研究如何拖動排序并永久把排序保存到數據庫中,做了小時,做出來了。現在只是實現了在當前頁面排序,但數據庫還是老樣子。在每次拖動完成后,利用這款插件內置的函數,通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫生的職稱排序。因為客戶的這個項目是醫院的人事系統,考慮到整個醫院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...
摘要:于是我就研究如何拖動排序并永久把排序保存到數據庫中,做了小時,做出來了。現在只是實現了在當前頁面排序,但數據庫還是老樣子。在每次拖動完成后,利用這款插件內置的函數,通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫生的職稱排序。因為客戶的這個項目是醫院的人事系統,考慮到整個醫院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...
摘要:于是我就研究如何拖動排序并永久把排序保存到數據庫中,做了小時,做出來了。現在只是實現了在當前頁面排序,但數據庫還是老樣子。在每次拖動完成后,利用這款插件內置的函數,通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫生的職稱排序。因為客戶的這個項目是醫院的人事系統,考慮到整個醫院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...
摘要:于是我就研究如何拖動排序并永久把排序保存到數據庫中,做了小時,做出來了。現在只是實現了在當前頁面排序,但數據庫還是老樣子。在每次拖動完成后,利用這款插件內置的函數,通過方式把排序完成的每個行的傳到后臺。 前一段時間修改了一個舊的項目,客戶要求我給表格重新排序,按醫生的職稱排序。因為客戶的這個項目是醫院的人事系統,考慮到整個醫院有幾千號人,要是一個個按客戶的要求排得累壞我的小腰...幸好...
閱讀 1551·2021-11-25 09:43
閱讀 2332·2019-08-30 15:55
閱讀 1465·2019-08-30 13:08
閱讀 2666·2019-08-29 10:59
閱讀 810·2019-08-29 10:54
閱讀 1551·2019-08-26 18:26
閱讀 2545·2019-08-26 13:44
閱讀 2653·2019-08-23 18:36