1.路由:通過(guò)路由將請(qǐng)求發(fā)送至處理函數(shù)
2.Laravel是簡(jiǎn)潔優(yōu)雅的PHP web開(kāi)發(fā)框架,具有富于表達(dá)性且簡(jiǎn)潔的語(yǔ)法,易于理解且強(qiáng)大的,提供強(qiáng)大的工具以開(kāi)發(fā)大型健壯的應(yīng)用,具有驗(yàn)證/路由/session/緩存/數(shù)據(jù)庫(kù)遷移工具/單元測(cè)試等常用的工具和功能
3.Laravel版本5.1和5.2需要使用PHP 5.5.9+
4.文件夾分類:app:核心代碼,業(yè)務(wù)邏輯
Http:編寫控制器文件夾
bootsteap:自動(dòng)啟動(dòng)和加載配置
config:配置文件
database:數(shù)據(jù)庫(kù)填充和遷移文件
public:入口,項(xiàng)目靜態(tài)文件(圖片,js等)
resources:視圖及原始的資源文件
views:視圖存放文件夾
storage:編譯后的模板文件,緩存,session等
tests:單元測(cè)試文件夾
cendor:以來(lái)模塊
5.Laravel路由:
(1)路由簡(jiǎn)介:用戶請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)程序進(jìn)行處理;作用是簡(jiǎn)歷url和程序直接的映射;請(qǐng)求類型:get/post/put/patch/delete
(2)基本路由:Route::請(qǐng)求類型('方法名',function(){});
(3)多請(qǐng)求路由:指定請(qǐng)求類型Route::match(['請(qǐng)求類型','請(qǐng)求類型'],'方法名',function(){});不指定請(qǐng)求類型:Route::any('方法名',function(){});
(4)路由參數(shù):Route::請(qǐng)求類型('文件/{參數(shù)}',function(參數(shù)){}); 帶正則Route::請(qǐng)求類型('文件/{參數(shù)}',function(參數(shù)){})->where(['參數(shù)'=>'正則',...]);
(5)路由別名(用route生成別名對(duì)應(yīng)的url):Route::請(qǐng)求類型('文件',['as'=>'別名',function(){}]);
(6)路由群組(針對(duì)多個(gè)群組進(jìn)行設(shè)置):Route::group(['prefix']=>'前綴名',function(){});
(7)路由中輸出視圖:Route::請(qǐng)求類型('view',function(){});
6.Laravel控制器:
(1)新建控制器:
namespace App\Http\Controllers;
class 控制器名 extends Controller{
public function 方法名(){
進(jìn)行處理
}
}
(2)控制器和路由關(guān)聯(lián):
Route::請(qǐng)求類型('路由名稱','控制器名稱@方法名稱');
Route::請(qǐng)求類型('路由名稱',['uses'=>'控制器名稱@方法名稱']);
(3)關(guān)聯(lián)后,路由特性怎么使用:
別名:Route::請(qǐng)求類型('路由名稱',['uses'=>'控制器名稱@方法名稱','as'=>'別名']);
參數(shù)綁定:Route::請(qǐng)求類型('路由名稱/{參數(shù)}',['uses'=>'控制器名稱@方法名稱']); 控制器傳入 參數(shù)
正則限制:Route::請(qǐng)求類型('路由名稱/{參數(shù)}',['uses'=>'控制器名稱@方法名稱'])->where('參數(shù)','限制條件'); 控制器傳入 參數(shù)
7.Laravel視圖(一個(gè)控制器對(duì)應(yīng)一個(gè)文件夾)
(1)新建視圖:
resources/views/文件夾名/文件名
(2)輸出視圖:
namespace App\Http\Controllers;
class 控制器名 extends Controller{
public function 方法名(){
return view('文件名');
}
}
加入變量:
namespace App\Http\Controllers;
class 控制器名 extends Controller{
public function 方法名(){
return view('文件名',['變量名稱'=>'變量值',...]);
}
}
輸出變量:{{變量名稱}}
8.Laravel模型
(1)新建模型:
app/文件名
namespace App;
use Illuminate\Database\Eloquent\Model;
class 模型名稱 extends Model{
public static function 方法名(){
進(jìn)行處理
}
}
(2)模型使用:
控制器中進(jìn)行調(diào)用
9.Laravel數(shù)據(jù)庫(kù)操作(DB facade(原始查找)/查詢構(gòu)造器/Eloquent ORM)
(1)新建數(shù)據(jù)表與連接數(shù)據(jù)庫(kù)
新建數(shù)據(jù)表:使用命令新建數(shù)據(jù)表
連接數(shù)據(jù)庫(kù):config/database.php/mysql方法
.env/修改數(shù)據(jù)庫(kù)配置文件
(2)使用DB facade實(shí)現(xiàn)CURD
第一步: namespace App\Http\Controllers;
class 控制器名 extends Controllers{
public function 方法名(){
進(jìn)行處理(打印另一種方法:dd)
DB::select('sql語(yǔ)句'); 查詢(返回?cái)?shù)組)
DB::insert('sql語(yǔ)句'); 插入(返回布爾值)
DB::update('sql語(yǔ)句'); 修改(返回修改行數(shù))
DB::delete('sql語(yǔ)句'); 刪除(返回刪除行數(shù))
}
}
第二步: Route::請(qǐng)求類型('路由名稱',['uses'=>'控制器名稱@方法名稱']);
10.Laravel查詢構(gòu)造器:
(1)簡(jiǎn)介及新增數(shù)據(jù):
簡(jiǎn)介:Laravel查詢構(gòu)造器提供方便/流暢的接口,用來(lái)建立及執(zhí)行數(shù)據(jù)庫(kù)查找語(yǔ)法;使用PDO參數(shù)綁定,以保護(hù)應(yīng)用程序免于SQL注入因此傳入的參數(shù)不需額外轉(zhuǎn)義特殊字符;基本可以滿足所有數(shù)據(jù)庫(kù)操作,在所有支持的數(shù)據(jù)庫(kù)系統(tǒng)上都可以執(zhí)行;
新增:
public function 方法名稱(){
DB::table('表名')->insert(['字段名'=>'字段值',...]); 插入(返回布爾值)
DB::table('表名')->insertGetId(['字段名'=>'字段值',...]) 插入獲取自增ID
DB::table('表名')->insert(['字段名'=>'字段值',...],['字段名'=>'字段值',...],...); 插入多條數(shù)據(jù)
}
(2)修改數(shù)據(jù):
更新為制定內(nèi)容:
public function 方法名稱(){
DB::table('表名')->where(條件)->update(['字段名'=>'字段值',...]); 修改(返回?cái)?shù)量)
}
自增和自減:
public function 方法名稱(){
DB::table('表名')->increment('字段名'); 修改自增(返回行數(shù),默認(rèn)1)
DB::table('表名')->increment('字段名',數(shù)量); 修改自增(返回行數(shù))
DB::table('表名')->decrement('字段名'); 修改自增(返回行數(shù),默認(rèn)1)
DB::table('表名')->decrement('字段名',數(shù)量); 修改自增(返回行數(shù))
加入條件:DB::table('表名')->where(條件)->自增自減('字段名'); 修改(返回行數(shù))
DB::table('表名')->where(條件)->自增自減('字段名',數(shù)量,['字段名'=>'字段值']); 修改多個(gè)字段(返回行數(shù))
}
(3)刪除數(shù)據(jù):
delete:
public function 方法名稱(){
DB::table('表名')->where(條件)->delete(); 刪除(返回行數(shù))
}
truncate:
public function 方法名稱(){
DB::table('表名')->truncate(); 清空數(shù)據(jù)表()
}
(4)查詢數(shù)據(jù):
get():
DB::table('表名')->get(); //獲取所有數(shù)據(jù)
first():
DB::table('表名')->first(); //獲取第一條數(shù)據(jù)
where():
DB::table('表名')->where(條件)->get(); //獲取要求數(shù)據(jù)
DB::table('表名')->whereRaw(多個(gè)條件)->get(); //獲取多個(gè)條件要求數(shù)據(jù)
pluck():
DB::table('表名')->pluck('字段名'); //獲取結(jié)果集中指定字段
lists(指定某個(gè)鍵為下標(biāo)):
DB::table('表名')->lists('字段名','字段名'); //獲取結(jié)果集中指定字段
select():
DB::table('表名')->select('字段名','字段名',...)->get(); //返回指定字段名的值
chunk():
DB::table('表名')->chunk(數(shù)量,function(變量名){}); //查找內(nèi)容分段顯示
(5)聚合函數(shù):
count(統(tǒng)計(jì)表記錄數(shù)):
public function 方法名稱(){
DB::table('表名')->count(); //返回?cái)?shù)量
}
max(返回最大值):
public function 方法名稱(){
DB::table('表名')->max('字段名'); //返回?cái)?shù)量
}
min(返回最小值):
public function 方法名稱(){
DB::table('表名')->min('字段名'); //返回?cái)?shù)量
}
avg(返回平均數(shù)):
public function 方法名稱(){
DB::table('表名')->avg('字段名'); //返回?cái)?shù)量
}
sum(返回和):
public function 方法名稱(){
DB::table('表名')->sum(); //返回?cái)?shù)量
}
11.Laravel數(shù)據(jù)庫(kù)操作 ORM
(1)ORM簡(jiǎn)介/模型的建立及查詢數(shù)據(jù):
簡(jiǎn)介:優(yōu)美簡(jiǎn)潔的ActiveRecord實(shí)現(xiàn),用來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作;每個(gè)數(shù)據(jù)表中有一個(gè)與之對(duì)應(yīng)的模型用于和數(shù)據(jù)表交互;
模型的建立:
namespace App;
use Illuminate\Database\Eloquent\Model;
class 模型名 extends Model{
protected $table = '表名'; //ID主鍵
protected $primaryKey = '主鍵名'; //指定主鍵
}
ORM查詢:
all():
public function 方法名稱(){
模型名稱::all(); //返回集合
}
find():
public function 方法名稱(){
模型名稱::find(); //返回集合
}
findOrFail(根據(jù)主鍵查找,沒(méi)有拋出異常):
public function 方法名稱(){
模型名稱::findOrFail(); //返回集合
}
查詢構(gòu)造器在ORM中的使用:
public function 方法名稱(){
模型名稱::get(); //返回集合
}
(2)ORM新增數(shù)據(jù)/自定義時(shí)間戳/及批量賦值:
模型新增數(shù)據(jù)(自定義時(shí)間戳):
public function 方法名稱(){
new 模型名稱();
模型變量->屬性名稱=屬性值;
模型變量->save(); //返回布爾值‘
return time(); //獲取時(shí)間,已轉(zhuǎn)換
}
模型Create方法新增數(shù)據(jù)(批量賦值,在模型中添加批量賦值的字段):
public function 方法名稱(){
模型名稱::create(['變量名'=>'變量值'],...);
模型名稱::firstOrCreate(['變量名'=>'變量值']); //以屬性查找用戶,沒(méi)有則新增
模型名稱::firstOrNew(['變量名'=>'變量值']); //以屬性查找,沒(méi)有則新建實(shí)例,需要保存則調(diào)用save方法
}
(3)ORM修改數(shù)據(jù):
模型更新:
public function 方法名稱(){
模型名稱::find(主鍵ID);
模型變量->變量名 = '變量值'; //布爾值
}
查詢語(yǔ)句批量更新:
public function 方法名稱(){
模型名稱::where(條件)->update(['變量名'=>'變量值'],...);
}
(4)ORM刪除數(shù)據(jù):
模型刪除:
public function 方法名稱(){
模型名稱::find(主鍵ID);
模型變量->delete(); //布爾值
}
主鍵值刪除:
public function 方法名稱(){
模型名稱::destroy(主鍵ID值); //影響行數(shù)
模型名稱::destroy(主鍵ID值,...); //影響行數(shù)
模型名稱::destroy([主鍵ID值,...]); //影響行數(shù)
}
條件刪除:
public function 方法名稱(){
模型名稱::where(條件)->delete(); //影響行數(shù)
}
12.Laravel Blade模板引擎
簡(jiǎn)介及模板繼承的使用:
簡(jiǎn)介:簡(jiǎn)單強(qiáng)大的模板引擎;不限制在視圖中使用原生PHP代碼;Blade視圖頁(yè)面被編譯成原生PHP代碼并緩存起來(lái),除非模板文件被修改,否則不會(huì)重新編譯;
繼承:
理由:維護(hù)方便;編寫方便;
section:(定義視圖片段,可擴(kuò)展)
public function 方法名稱(){
return view('模板路徑');
}
yield:(定義視圖片段,不可擴(kuò)展)
@yield
extends:
@extends('繼承路徑')
parent:
@section('重寫路徑');
@parent //父模板
內(nèi)容
@stop
基礎(chǔ)語(yǔ)法及include的使用:
模板輸出變量:
{{變量名稱}}
模板調(diào)用PHP:
{{代碼}}
原樣輸出:
@{{變量}}
模板注釋:
{{--? --}}
include使用:
@include('路徑',傳值);
流程控制:
if:
@if(條件)
輸出
@elseif(條件)
輸出
@else
輸出
@endif
unless(相當(dāng)于if的取反):
@unless(條件)
輸出
@endunless
for:
@for(條件($i))
輸出
@endfor
foreach:
@foreach(變量名稱 as 變量名稱)
{{變量名稱->字段名}}
@endforeach
@forelse(變量名稱 as 變量名稱)
{{變量名稱->字段名}}
@empty
輸出
@endforelse
模板中的URL(常用url/route,方便):
*url(路由名稱生成):
模板:{{url('路有名')}}
action(指定控制器及方法名):
模板:{{action('控制器名@方法名')}}
*route(路由別名生成):
模板:{{route('別名')}}