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