Laravel入坑指南(4)——資料庫(Mysql)
來來來,新的一節出爐了。這一節大家一起了解,Laravel如何對Mysql進行CURD。
我們回顧一下,PHP操作Mysql無非就是通過五個要素:host(地址)、username(使用者名稱)、password(密碼)、database(資料庫名)和charset(字符集),就可以連線並操作資料庫了。所以,Laravel也逃不出這個套路,我們需要了解的也就只有配置檔案和CURD的方法。
1、配置檔案
Laravel關於資料庫的配置檔案是放在/config/database.php中,在這個檔案中有一個mysql配置節,如下所示:
大家會發現,在這裡就有剛剛提到的連線資料庫五個要素。同時,大家也會發現,這五個要素,都是env()函式的返回值。那env()從哪裡讀出這些值呢?這又要提到第一講裡面的.env檔案。在專案根目錄下有個/.env,裡面有一堆配置,env()函式就是從這個檔案中讀取相應的值返回,如果讀不到,才返回第二個引數。相關的配置如下:
2、操作前的準備
現在假設test資料庫中,有一張名為course的表,結構如下:
其中uid為主鏈
3、查:返回陣列,每個元素都是stdClass
1) 普通查詢
use Illuminate\Support\Facades\DB; $course=DB::select("SELECT * FROM course"); foreach ($course as $val) { echo $val->uid,$val->cname,$val->teacher,'<br />'; }
2) 引數繫結
$course=DB::select("SELECT * FROM course WHERE uid=? AND cname=?",[1,'php']);foreach ($course as $val) { echo $val->uid,$val->cname,$val->teacher,'<br />'; }
3) 命名引數繫結
$course=DB::select("SELECT * FROM course WHERE uid=:uid AND cname=:cname",["uid"=>1,"cname"=>'php']); foreach ($course as $val) { echo $val->uid,$val->cname,$val->teacher,'<br />'; }
建議:引數傳遞時,用(命名)引數繫結的方式,有利於防止sql注入攻擊
4、刪查改:
//新增成功返回true,插入失敗丟擲異常(比如主鍵衝突) $rtl=DB::insert('INSERT INTO course (uid,cname,num,teacher) values (?, ?, ?,?)', [1,'python', 5, 'ckb']); //返回刪除的行數 $rtl=DB::delete("DELETE FROM course WHERE uid>=2"); //返回被更新的行數,失敗丟擲異常(比如主鍵主衝) $rtl=DB::update("UPDATE course SET teacher='abc' WHERE uid=3");
建議:這三個操作,在引數傳遞時,也可以用(命名)引數繫結,並用也建議使用(命名)引數繫結
5、無需返回值執行sql語句
DB::statement("DROP TABLE course");
實際上,上述所有CURD的語句,都可以用statement執行。這個函式,執行成功返回true,執行失敗丟擲異常
6、事務
1) 函式形態
DB::transaction(function () { //這裡進行CURD //如果想要回滾,可直接丟擲異常 });
2) 手動宣告
try { DB::beginTransaction(); //進行CURD //如果想要回滾,丟擲異常 DB::rollBack(); } catch(Exception $e) { DB::rollBack(); //接住異常,在這裡回滾 }
到這裡,Laravel的CURD介紹完了,我們可以很好地對資料庫進行操作了。關於Laravel的資料庫話題,還有查詢構造器和Eloquent模型,在之後的話題中會進行敘述,感興趣的同學可以先檢視官網文件。
大家下期見:)
--------------------------- 我是可愛的分割線 ----------------------------
最後博主借地宣傳一下,漳州程式設計小組招新了,這是一個面向漳州青少年資訊學/軟體設計的學習小組,有意向的同學點選連結,聯絡我吧。