Http
目錄是咱們業務邏輯的存放點cache.php
(緩存)database.php
(數據庫)、queue.php
(隊列)等CSS 、JS、IMG
等get,post,put,pathc,delete
Tips: 業務邏輯不該該寫在路由當中,路由只是接收參數後轉發給控制器(Controller
)進行處理php
Route::get('basic1',function(){ return 'Hello World'; })
Route::post('basic2',function(){ return 'basic2'; })
Route::match(['get','post'],'multy1',function(){ return 'multy1'; })
Route::any('multy2',function(){html
return 'multy2';
})laravel
Route::get('user/{id}',function($id){ return 'USER-'.$id; });
將name
賦默認值kitty
,是name
變爲可選項(加?
)正則表達式
Route::get('user/{name?}',function($name = 'kitty'){ return 'USERNAME-'.$name; });
將參數使用正則表達式來限制數據庫
Route::get('user/{name?}',function($name = 'kitty'){ return 'USERNAME-'.$name; })->where('name',[A-Za-z]+); //name可由多個字母組成 Route::get('user/{id}/{name?}',function($name = 'kitty'){ return 'USER-Id:'. $id . ' name:'.$name; })->where['id'=>[0-9]+,'name'=>[A-Za-z]+]
Route::get('user/member-center',['as' => 'center',function(){ return 'member-center'; }]);
prefix
路由前綴Route::group(['prefix' => 'member'],function(){ Route::get('user/member-center',['as' => 'center',function(){ return 'member-center'; }]); Route::any('multy2',function(){ return 'multy2'; }); });
Route::get('view',function(){ return view('welcome');//調用/laravel/resources/views/welcome.blade.php文件 });
@
控制器下的方法)@
控制器下的方法])@
控制器下的方法,'as'=>'別名'])@
控制器下的方法]) 直接在控制器裏面調用view
而後return
返回便可bootstrap
return view(路徑/模板, [待傳入的變量array格式]);
例: return view('member/info', ['id'=>$id]);
數組
DB facade
實現CURD
(原生SQL
語句操做數據庫 )緩存
$result = DB::insert('insert into student(name,age) values(?,?)', ['abcd',23]);
$result = DB::select('select * from student where id < ?', [ 1002 ]);
$result = DB::update('update student set age = ? where name = ?', [ 21, 'EnzoLiu' ]);
$result = DB::delete('delete from student where name = ?', ['abcd']);
laraevl
內置函數dd
,可人性化的打印數組:dd($result);閉包
SQL
注入,所以傳入的參數不需額外轉義特殊字符一、新增一條數據(返回bool類型 新增結果)app
$result = DB::table('student')->insert([ 'name' => 'Toky', 'age' => 19 ]);
二、新增一條數據(返回int類型 新增後的主鍵ID)
$result = DB::table('student')->insertGetId([ 'name' => '親愛的路人', 'age' => 19 ]);
三、增長多條數據(注: 只能使用insert 返回新增結果)
$result = DB::table('student')->insert( [ ['name' => 'name1', 'age' => 31], ['name' => 'name2', 'age' => 32] ] );
//返回影響的行數 DB::table('as_admin')->where('id', 12)->update(['age' => 18]);
//字段自增3寫,默認爲1法 返回影響的行數 DB::table('as_admin')->where('id', 12)->increment('age', 3);
//字段自減3寫,默認爲1法 返回影響的行數 DB::table('as_admin')->where('id', 12)->decrement('age', 3);
//自增或自減的同時更新name字段 DB::table('as_admin')->where('id', 12)->decrement('age', 3, ['name' => '張佳']);
關鍵詞:
delete 刪除數據 truncate 清空表,並將ID自增重置爲0
示例代碼:
delete DB::table("表名")->where('條件')->delete(); truncate DB::table("表名")->truncate();
get - 查詢多條數據結果
DB::table("表名")->get(); DB::table("表名")->where(條件)->get();
pluck - 查詢指定字段數據
DB::table("表名")->pluck("字段名"); DB::table("表名")->where(條件)->pluck("字段名");
lists - 和 pluck 效果相同
DB::table("表名")->lists("字段名"); DB::table("表名")->lists("字段名1","字段名2");
select - 指定要查詢的字段
DB::table("表名")->select("id","name")->get();
結果分塊:若是你須要操做數千條數據庫記錄,能夠考慮使用 chunk
方法。這個方法每次只取出一小塊結果傳遞給 閉包 處理。例如,一次處理整個 users
表中的 100
個記錄:
DB::table('users')->orderBy('id')->chunk(100, function ($users) { foreach ($users as $user) { // } });
你能夠從 閉包 中返回 false
來阻止進一步的分塊的處理:
DB::table('users')->orderBy('id')->chunk(100, function ($users) { // Process the records... return false; });
DB::table('as_admin')->select('id','name','age')->count(); //返回記錄數 DB::table('as_admin')->select('id','name','age')->max('age'); //最大值,min同理 DB::table('as_admin')->select('id','name','age')->avg('age'); //返回平均值 DB::table('as_admin')->select('id','name','age')->sum('sum'); //返回指定字段數據
建立Model
類型,方法裏面聲明兩個受保護屬性:$table
(表名)和$primaryKey
(主鍵)
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Student extends Model{ protected $table = 'student'; protected $primaryKey = 'id'; }
all: 經過orm
獲取全部數據
$result = Student::all();
find: 經過主鍵返回指定的數據
$result = Student::find(1001);
findOrFail: 經過主鍵返回指定的數據 未查找到到則拋出異常
$result = Student::findOrFail(1001);
獲取符合條件的數據
$student = Student::where('age', '<', 20)->get();
分段式(分頁)獲取數據遞交給閉包函數循環處理
Student::chunk(2, function($student) { var_dump($student); });
查詢構造器之聚合函數
$result = Student::count();
創建model
類 (app\Student.php
)
protected $table = 表名; protected $promaryKey = 主鍵名; public $timestamps = false; //是否開啓時間戳自動調節 //使用時間戳存入數據庫 protected function getDateFormat() { return time(); } //將數據庫裏的時間戳取出時不被轉換爲日期 protected function asDatetime($val) { return $val; } protected $fillable = ['name', 'age']; //容許批量賦值的字段 白名單設置 protected $guarded = ['aa', 'bb']; //不容許批量賦值的字段 黑名單設置
$fillabel
是爲了防止注入攻擊,好比有的用戶可能在表單中注入了一些別的信息更改數據庫中的其餘內容,所以咱們要定義哪些數據是能被修改的,這裏就是’$fillabel
’包含的內容纔可以被修改.而$hidden
包含的內容則是指存儲時這些信息會被加密存儲,這樣即便數據庫泄露出去,信息也不會那麼容易直接被讀取。
$student = new Student(); $student -> name = 'stu1'; $student -> age = 20; $student -> save();
$student = new Student(); $result = $student -> create([ 'name' => 'create', 'age' => 30 ]); //firstOrCreate 查找數據並返回,若是不存在則插入該條數據並返回 $result = Student::firstOrCreate([ 'name' => 'aj', 'age' => 32 ]); //firstOrNew 查找數據並返回,若是不存在則返回該類的對象,調用save才得以保存 $result = Student::firstOrNew(['name' => 'make']); $result = $result->save(); dd($result);
經過模型更新數據 (最後返回bool
類型,單條數據是否修改爲功)
$student = Student::find(1051); $student->name = 'aj2'; $result = $student->save();
結合查詢語句批量更新 (返回int
類型 受影響行數)
$result = Student::where('id', '>', 1050) ->update([ 'name'=>'adj', 'age'=>32 ]);
根據指定條件刪除數據
//1. $student = Student::find(1001); $student ->delete(); //2. Student::destroy(1001); Student::destroy(1001,1002); Student::destroy([1001,1002]); //3. Student::where('id', '>', 1004)->delete();
<body> <div class="header"> @section('header') 頭部 @show </div> <div class="main"> <div class="sidebar"> @section('sidebar') 側邊欄 @show </div> <div class="content"> @yield('content','主要內容區域'); </div> </div> <div class="footer"> @section('footer') 底部 @show </div> </body>
section
是用來定義一個視圖片斷的
yield
是用來展現某個指定的section裏所表達的內容 能夠將其假設爲一個佔位符用子模版去實現它
區別:
在view
中,模板繼承: 用@extends('模板名')
模板重寫:
@section('重寫部分的名字')
重寫的內容
@stop
@yield
的模板重寫也是同樣的用法。
php
變量php
代碼 模板中的流程控制 @if @unless @for $foreach $forelse
@if($name == 'EnzoLiu') i'm EnzoLiu @elseif($name == 'jeck') i'm jeck @else who am i? @endif
@unless($name != 'EnzoLiu') 我是EnzoLiu @else 我不是EnzoLiu @endunless
@for($i=0; $i<10; $i++) {{ $i }} @endfor
@foreach($res as $key => $value) {{ $key }}<br>{{ $value }} @endforeach
釋: $res若是有值則運行 $obj->name 代碼塊, 若是爲空則顯示 null
@forelse($res as $obj) {{ $obj->name }}<br> @empty null @endforelse
一、 url()經過路由的名稱生成url
<a href="{{ url('url') }}">url()</a>
二、 action()經過制定控制器及方法名生成url
<a href="{{ action('StudentController@urlTest') }}">action()</a>
三、 route()經過路由的別名生成url
<a href="{{ route('url') }}">route()</a>