




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
Laravel框架數(shù)據(jù)庫操作與應(yīng)用
Laravel數(shù)據(jù)庫操作引入
Laravel框架采用統(tǒng)一的接口實現(xiàn)對不同數(shù)據(jù)庫操作的封裝,使得對數(shù)據(jù)庫的連接和操作變得非常容易。那如何進(jìn)行使用呢?數(shù)據(jù)庫配置使用DB類操作數(shù)據(jù)庫使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作訪問與操作數(shù)據(jù)庫是Web應(yīng)用程序設(shè)計的重要部分。本章以MySQL數(shù)據(jù)庫為例,講解Laravel框架中的數(shù)據(jù)庫操作。一、數(shù)據(jù)庫配置Laravel數(shù)據(jù)庫操作數(shù)據(jù)準(zhǔn)備01數(shù)據(jù)庫:shopdata表:users記錄:一、數(shù)據(jù)庫配置Laravel數(shù)據(jù)庫操作在Laravel框架中配置數(shù)據(jù)庫02Laravel框架中,數(shù)據(jù)庫的配置文件是config\database.php。打開該文件,找到與配置MySQL數(shù)據(jù)庫相關(guān)的代碼。一、數(shù)據(jù)庫配置Laravel數(shù)據(jù)庫操作在Laravel框架中配置數(shù)據(jù)庫02如果數(shù)據(jù)庫連接的相關(guān)參數(shù)在“.env”文件中進(jìn)行了正確的配置,則可以對config\database.php文件不必再進(jìn)行配置。因此,通常只要配置好“.env”文件就可以了。二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作在Laravel中,DB類對常用的數(shù)據(jù)庫操作進(jìn)行了封裝,可以完成數(shù)據(jù)的查詢、添加、修改和刪除等操作。對應(yīng)一些復(fù)雜的需求,也可以手工編寫SQL語句、交由DB類以運行原生SQL代碼的方式進(jìn)行執(zhí)行。使用DB類操作數(shù)據(jù)庫,首先必須要引入DB類,引入方法為:
useDB;二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作查詢數(shù)據(jù)01(1)全表查詢:全表查詢使用get()方法,其語法格式如下:
$data=DB::table('表名')->get();
若是要查詢指定字段的數(shù)據(jù),其語法格式如下:
$data=DB::table('表名')->get(['字段名1','字段名2','字段名3',...]);
或:
$data=DB::table('表名')->select('字段名1','字段名2','字段名3',...)->get();
例如:$data=DB::table('users')->get();$data=DB::table('users')->get(['username','password']);二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作查詢數(shù)據(jù)01(2)指定條件查詢:指定條件查詢也是使用get()方法,但在調(diào)用get()方法之前,使用where()方法指定查詢條件,其語法格式如下:
$data=DB::table('表名')->where('字段名','運算符','字段值')->get();
例如:$data=DB::table('users')->where('sex','男')->get();$data=DB::table('users')->where('time','<','2021-6-1')->get();$data=DB::table('users')->where('sex','男')->where('time','<','2021-6-1')->get();二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作查詢數(shù)據(jù)01(3)分頁查詢:分頁查詢使用limit()和offset()方法來實現(xiàn),其語法格式如下:
$data=DB::table('表名')->limit('記錄數(shù)')->offset('偏移量')->get();
例如:“l(fā)imit(5)->offset(1)”相當(dāng)于SQL語句中的“LIMIT1,5”。二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作查詢數(shù)據(jù)01(4)查詢結(jié)果排序:查詢結(jié)果排序使用orderBy()方法來實現(xiàn),其語法格式如下:
$data=DB::table('表名')->orderBy('字段名','排序規(guī)則')->get();
例如:$data=DB::table('users')->where('sex','男')->orderBy('time','desc')->get();二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作查詢數(shù)據(jù)01(5)單行查詢:單行查詢使用first()方法,其語法格式如下:
$data=DB::table('表名')->where('字段名','運算符','字段值')->first();
例如:$data=DB::table('users')->orderBy('time','asc')->limit(1)->offset(0)->first();if($data){$username=$data->username;$time=$data->time;}操作案例示例1查詢users表中所有用戶數(shù)據(jù),并以表格的形式顯示查詢結(jié)果。打開app\Http\Controllers\UserController.php文件,首先引入DB類,然后修改類中userList()方法的代碼,代碼如下所示:useDB;//引入DB類classUserControllerextendsController{……(原有代碼省略)publicfunctionuserList(){$data=DB::table('users')->get();returnview('admin/userList')->with('data',$data);}……(原有代碼省略)}操作案例示例1查詢users表中所有用戶數(shù)據(jù),并以表格的形式顯示查詢結(jié)果。瀏覽器地址欄中輸入:。二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作添加數(shù)據(jù)02添加數(shù)據(jù)使用insert()方法,返回值為true或false,表示添加是否成功。其語法格式如下:
$result=DB::table('表名')->insert($data);$data是一個數(shù)組,表示要添加數(shù)據(jù)。若是一維數(shù)組,則表示添加一條數(shù)據(jù);若是二維數(shù)組,則表示添加多條數(shù)據(jù)。數(shù)組的鍵名對應(yīng)數(shù)據(jù)表的字段名。操作案例示例2向users表中添加一條用戶數(shù)據(jù),并輸出返回值。打開app\Http\Controllers\UserController.php文件,在該控制器類中定義方法userAdd(),代碼如下所示:publicfunctionuserAdd(Request$request){$data=['username'=>'admin','password'=>'123456','sex'=>'男'];$result=DB::table('users')->insert($data);dump($result);}打開routes\web.php文件,添加如下代碼:Route::get('/admin/userAdd','UserController@userAdd');操作案例示例2向users表中添加一條用戶數(shù)據(jù),并輸出返回值。瀏覽器地址欄中輸入:。二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作修改數(shù)據(jù)03修改數(shù)據(jù)使用update()方法,返回值為受影響的行數(shù)。其語法格式如下:
$result=DB::table('表名')->update($data);或:
$result=DB::table('表名')->where('字段名','運算符','字段值')->update($data);例如:$data=['password'=>'123'];DB::table('users')->where('uid',1)->update($data);二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作刪除數(shù)據(jù)04刪除數(shù)據(jù)使用delete()方法,返回值為刪除的行數(shù)。其語法格式如下:
$result=DB::table('表名')->delete();或:
$result=DB::table('表名')->where('字段名','運算符','字段值')->delete();例如:DB::table('users')->where('uid',1)->delete();二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作執(zhí)行原生SQL語句05(1)執(zhí)行查詢語句:執(zhí)行查詢語句使用DB::select()方法,返回值為查詢結(jié)果集。其語法格式如下:
$data=DB::select($sql,$paramer);
例如:$sql="select*fromuserswheresex=?";$data=DB::select($sql,['男']);二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作執(zhí)行原生SQL語句05(2)執(zhí)行插入語句:執(zhí)行插入語句使用DB::insert()方法,返回值為true或false。其語法格式如下:
$result=DB::insert($sql,$paramer);
例如:$sql="insertintousers(username,password,sex)values(?,?,?)";$result=DB::insert($sql,['Rose','123456','女']);二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作執(zhí)行原生SQL語句05(3)執(zhí)行修改語句:執(zhí)行修改語句使用DB::update()方法,返回值為受影響的行數(shù)。其語法格式如下:
$result=DB::update($sql,$paramer);
例如:$sql="updateuserssetpassword=?whereuid=?";$result=DB::update($sql,['123',2]);二、使用DB類操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作執(zhí)行原生SQL語句05(4)執(zhí)行刪除語句:執(zhí)行刪除語句使用DB::delete()方法,返回值為刪除的行數(shù)。其語法格式如下:
$result=DB::delete($sql,$paramer);
例如:$sql="deletefromuserswhereuid=?";$data=DB::update($sql,[2]);三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作Laravel框架中內(nèi)置了一個名稱為Eloquent的模型組件,其采用了ORM(對象關(guān)系映射)的設(shè)計思想。ORM通過在Laravel中構(gòu)建模型類,并使模型與數(shù)據(jù)庫表建立一一對應(yīng)的映射關(guān)系,它將數(shù)據(jù)庫中的表作為類、表中的記錄作為對象、表中的字段作為屬性,從而建立一個可在編程語言里使用的“虛擬對象數(shù)據(jù)庫”,實現(xiàn)對數(shù)據(jù)庫的操作。三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作創(chuàng)建模型01模型是數(shù)據(jù)表在面向?qū)ο缶幊陶Z言中的映射,可以使用phpartisan命令來創(chuàng)建一個模型,其語法格式如下:
phpartisanmake:model模型名模型的命名為“表名.php”的形式,其中表名的首字母大寫。默認(rèn)情況下,生成的模型文件存放在Laravel框架的app目錄中。例如:phpartisanmake:modelMemberphpartisanmake:modelmodel/User三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作創(chuàng)建模型01使用模型操作數(shù)據(jù)庫,首先必須要引入模型類。以引入model/User模型類為例,其引入方法為:
useApp\model\User;三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作模型的約定規(guī)則02(1)表名的約定:模型對應(yīng)的表名默認(rèn)約定為類名的小寫復(fù)數(shù)形式。例如,User類對應(yīng)的表名默認(rèn)約定為users。如果不遵循這個對應(yīng)表名的默認(rèn)約定,可以在模型類中使用$table屬性來指定。
例如:protected$table='user';三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作模型的約定規(guī)則02(2)主鍵的約定:模型對應(yīng)的數(shù)據(jù)表中默認(rèn)約定有?個字段名為id的整型?增主鍵。如果數(shù)據(jù)表的主鍵名不是id,可以在模型類中使用$primaryKey屬性來指定。
例如:protected$primaryKey='uid';三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作模型的約定規(guī)則02(3)時間戳的約定:是否自動維護時間戳,默認(rèn)為true。當(dāng)為true時,默認(rèn)數(shù)據(jù)表中有created_at(創(chuàng)建時間)和updated_at(更新時間)兩個字段,并且由模型自動維護這兩個字段。如果數(shù)據(jù)表中不包含這兩個字段,或者只包含其中一個,或者不希望由模型自動維護,可以在模型類中設(shè)置$timestamps屬性為false即可。
例如:public$timestamps=false;三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作模型的約定規(guī)則02(4)白名單與黑名單:模型可以進(jìn)行批量賦值,將表單提交過來的所有信息直接添加到數(shù)據(jù)表。當(dāng)使用fill()方法添加數(shù)據(jù)時,必須要先定義$fillable或guarded屬性來指定白名單字段或黑名單字段。$fillable屬性用于指定允許自動填充的模型字段,而$guarded屬性用于指定不允許自動填充的模型字段。它們的格式為一維數(shù)組,且它們只能二選一。
例如:protected$fillable=['username','password','sex','email'];三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作使用模型查詢數(shù)據(jù)03(1)get()方法:模型的get()方法類似于DB類的get()方法,返回的都是一個對象集合(一個是模型對象集合、一個是普通對象集合),其語法格式如下:
$data=模型名::where('字段名','運算符','字段值')->get();
例如:$data=User::where('sex','男')->get();三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作使用模型查詢數(shù)據(jù)03(2)all()方法:模型的all()方法用來查詢數(shù)據(jù)表中的所有記錄,返回的是一個模型對象集合,其語法格式如下:
$data=模型名::all();
例如:$data=User::all();三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作使用模型查詢數(shù)據(jù)03(3)find()方法:模型的find()方法用來根據(jù)主鍵查詢記錄,返回的是一個模型的實例對象,其語法格式如下:
$data=模型名::find('主鍵值');
例如:$data=User::find(2);操作案例示例3使用模型查詢users表中所有用戶數(shù)據(jù),并以數(shù)據(jù)表格的形式顯示查詢結(jié)果。在項目文件夾UserPro中啟動命令行窗口,輸入創(chuàng)建model/User模型的命令后回車:打開app\model\User.php文件,在類中定義如下屬性:classUserextendsModel{protected$primaryKey='uid';//設(shè)置主鍵為uid}操作案例示例3使用模型查詢users表中所有用戶數(shù)據(jù),并以數(shù)據(jù)表格的形式顯示查詢結(jié)果。打開app\Http\Controllers\UserController.php文件,首先引入model/User類,然后修改類中userList()方法的代碼,如下所示:useApp\model\User;//引入model/User類classUserControllerextendsController{……(原有代碼省略)publicfunctionuserList(){$data=User::all();returnview('admin/userList')->with('data',$data);}……(原有代碼省略)}操作案例示例3使用模型查詢users表中所有用戶數(shù)據(jù),并以數(shù)據(jù)表格的形式顯示查詢結(jié)果。瀏覽器地址欄中輸入:。三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作使用模型添加數(shù)據(jù)04(1)模型對象的save()方法:如果需要向數(shù)據(jù)表中添加一條記錄,首先創(chuàng)建模型實例對象、然后給對象的屬性設(shè)置需要添加的值(對象的屬性對應(yīng)了數(shù)據(jù)表中的字段)、最后再調(diào)用save()方法執(zhí)行添加操作。
例如:$user=newUser();$user->username='Tom';$user->password='123456';$user->sex='男';$user->save();三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作使用模型添加數(shù)據(jù)04(2)模型對象的fill()方法:fill()方法用來以數(shù)組的方式為模型填充數(shù)據(jù),數(shù)組的鍵名對應(yīng)字段名。fill()方法同樣需要首先創(chuàng)建模型實例對象,最后調(diào)用save()方法執(zhí)行添加操作。
例如:$data=['username'=>'Rose','password'=>'123456','sex'=>'女'];$user=newUser();$user=fill($data);$user->save();三、使用模型操作數(shù)據(jù)庫Laravel數(shù)據(jù)庫操作使用模型添加數(shù)據(jù)04(3)模型類的insert()方法:使用模型類的insert()方法也可以實現(xiàn)數(shù)據(jù)的添加操作。
例如:$data=['username'=>'Peter','password'=>'123456','sex'=>'男'];User::insert($data);操作案例示例4使用User模型向數(shù)據(jù)表中添加一條用戶數(shù)據(jù)(通過表單實現(xiàn),添加后跳轉(zhuǎn)到用戶列表頁面)。在resources\views\admin目錄下創(chuàng)建userAdd.blade.php文件?!?lt;formaction="{{url('/admin/userAdd')}}"method="post">用戶名:<inputtype="text"name="username"/><br/>密碼:<inputtype="password"name="password"/><br/>性別:<inputtype="text"name="sex"/><br/><inputtype="submit"value="添加"/>{{csrf_field()}}</form>……操作案例示例4使用User模型向數(shù)據(jù)表中添加一條用戶數(shù)據(jù)(通過表單實現(xiàn),添加后跳轉(zhuǎn)到用戶列表頁面)。打開app\model\User.php文件,在類中定義如下屬性:classUserextendsModel{protected$primaryKey='uid';//設(shè)置主鍵為uidprotected$fillable=['username','password','sex','email'];//設(shè)置白名單字段public$timestamps=false;//不自動維護時間戳}打開routes\web.php文件,添加如下代碼:Route::post('/admin/userAdd','UserController@userAdd');操作案例示例4使用User模型向數(shù)據(jù)表中添加一條用戶數(shù)據(jù)(通過表單實現(xiàn),添加后跳轉(zhuǎn)到用戶列表頁面)。打開app\Http\Controllers\UserController.php文件,修改類中userAdd()方法的代碼,如下所示:publicfunctionuserAdd(Request$request){if($re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年海南高中學(xué)業(yè)水平合格性考試化學(xué)試卷真題(含答案詳解)
- 健康生活-快樂生活課件
- 2024年水利管理及技術(shù)咨詢服務(wù)項目投資申請報告代可行性研究報告
- 虎丘區(qū)工程監(jiān)理管理辦法
- 融媒體團隊管理辦法細(xì)則
- 衡水市藥品安全管理辦法
- 行業(yè)稅收網(wǎng)格化管理辦法
- 裝修貸資金管理暫行辦法
- 西安疫情中風(fēng)險管理辦法
- 規(guī)范新聞記者證管理辦法
- GB/T 16924-2008鋼件的淬火與回火
- 基礎(chǔ)護理學(xué):肌內(nèi)注射
- 靜脈輸液(最終版)
- 藥品電子監(jiān)管碼管理sop
- 2018年上海高考?xì)v史試題及答案
- 醫(yī)療器械直調(diào)管理制度
- 中儲糧內(nèi)控管理地圖手冊
- 銀行不良貸款責(zé)任認(rèn)定及問責(zé)管理工作實施細(xì)則
- 科技工作管理辦法
- 烏雞散-圣濟總錄卷八-方劑加減變化匯總
- 離婚一方財產(chǎn)轉(zhuǎn)移
評論
0/150
提交評論