Laravel 是一款簡潔,優雅的一款框架,能夠說是入門TP後的第二款能夠選擇的框架。php
目錄部分:mysql
默認訪問的文件是:public->index.phplaravel
路由:正則表達式
存放路徑:app/http/routes.phpsql
TP 的訪問模式是 用戶訪問->控制器->Model->視圖數據庫
Laravel 的訪問模式 用戶訪問->路由->控制器->Model->視圖bootstrap
簡單的說,Laravel是經過路由來訪問各個控制器的服務器
類型:(經常使用的類型中的其中2種)
get: Route::get('basic1', function(){app
return 'Hello World';框架
});
post: Route::post('basic2', function(){
return 'Hello World2';
});//不能用URL直接訪問
多請求路由
match: Route::match(['get', 'post'], 'multy', function(){
return 'Hello World3';
});//既能夠用get方式訪問,也能夠用post方式訪問,便是指定方式請求。
any: Route::any('matrh', function(){
return 'Hello World4';
});//響應全部http請求。
路由參數
get:Route::get('user/{id}', function($id){
return 'User-id-'.$id;
});
默認值
Route::get('user/{name?}', function($name = 'sean'){
return 'User-name-'.$name;
});
用正則表達式判斷
Route::get('user/{name?}', function($name){
return 'User-name-'.$name;
})->where('name', '[A-Za-z]+');//where('要匹配正則的字段', '正則的規則,用[]包含')
用正則判斷多個字段
Route::get('user/{id}/{name}', function($id, $name){
return 'User-id-' . $id . ' User-name-' . $name;
})->where(['id' => '[0-9]+', 'name' => '[A-Za-z]+']);
路由別名
Route::get('user/member-user', ['as' => 'member', function(){
return 'member-user';
}]);
路由羣組
Route::group(['prefix' => 'member', function(){
Route::get('user/{name}', function($name){
return 'user-'.$name;
});
Rount::get('user/{id}', function($id){
return 'id ='.$id;
})
}]);//訪問的時候能夠經過member前綴,訪問路由羣組裏面的路由 例如:
/* 本來是http://localhost/Laravel/laravel52/public/user/name
加上前綴後變成http://localhost/Laravel/laravel52/public/menber/user/name
一樣能夠訪問
*/
路由中輸出視圖
Route::get('view', function(){
return view('welcome');
});
總結:項目中的代碼不能寫在這裏。路由只是用來接受請求,並轉化給控制器中的方法進行處理。
控制器
路徑:app/HttpControllers
新建一個控制器
1.和TP同樣 MemberController.php
2.namespace App\Http\Controllers;
3.寫個類
eg:class MemberController extends Controller
{
public function info()
{
return 'member-info';
}
}
路由和控制器關聯
Route::get('member/info', 'MemberController@info');//Route::get('控制器名/控制器方法名', '控制器名Controller @ 控制器方法');
第二種方式:
Route::get('member/info', ['uses' => 'MemberController@info']);
控制器帶參數
Route::any('member/{id}', ['uses' => 'MemberController@info']);
在控制器方法裏面:
public function info($id)
{
return $id;
}
當要限制參數類型
Route::any('member/{id}', ['uses' => 'MemberController@info'])->where('id', '[0-9]+');
視圖
路徑:resources/views
輸出視圖
public function info()
{
return view('目錄名/文件名');
}
前提是在視圖層建好這個文件
命名規則: 文件名.blade.php;
通常一個控制器對應一個目錄,若是控制器是MemberController.php 則創建一個member目錄,控制器裏要的視圖存放在這個目錄裏面
以上總結:和TP同樣
在控制器中帶變量
public function inin()
{
return view('menber', [
'name'=>'陳77',
'age'=>'老不死'
]);
}
模版中輸出變量
{{$name}} {{$age}}
模型
路徑:app
新建一個模型:
namespace App;
use Illuminate\Database\Eloquent\Model;
class Member extends Model
{
public static function getMember()
{
return 'sean';
}
}
在控制器中使用
1.在開頭位置
use App/模型名;
2.由於上面的模型是用靜態方法定義
因此調用時候:模型名::模型裏面的方法名();
操做數據庫
三種方式
DB facade(原始查找)
查詢構造器
Eloquent ORM
路徑:
config/database.php
'prefix' => '表前綴'(沒有可忽略)
對應.env文件
修改數據庫配置
vendor/.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1 //服務器地址
DB_PORT=3306//端口號
DB_DATABASE=homestead//數據庫名
DB_USERNAME=homestead//用戶名
DB_PASSWORD=secret//密碼
DB:原生語句查詢
$res = DB::select('select * from goods'); dd($res);(至關於TP中的dump());
增長
$res = DB::insert('insert into goods(name, age) values(?, ?)',['sean', 18]);
更改
$res = DB::update('update goods set age = ? where name = ?', ['17', 'sean']);
刪除
$res = DB::delete('delete from goods where id = ?', ['1001']);
查詢構造器(重點)用內置的方法對數據庫進行增刪改查
簡介:
提供方便,流暢的接口,用來創建以及執行數據庫操做
使用PDO參數綁定,以保護應用程序免於SQL注入所以傳入的是數據不須要另外轉義特殊字符串
基本能夠知足全部數據庫操做。
要訪問這個數據的方法,須要增長一條路由,輸入訪問的 URL 調用這個路由訪問到控制器裏面的方法。
增長
DB::table('goods')->insert([
['name' => 'name1', 'age' => 18],
['name' => 'name2', 'age' => 12]
]);
DB::table('goods')->insertGetId([
['name' => 'name1', 'age' => 18],
['name' => 'name2', 'age' => 12]
]);//獲取到最後插入的ID
修改
DB::table('goods')->where('id', 2)->update(['age' => 13]);//把goods表的id=2的年齡改爲age=13;
自增
DB::table('goods')->where('id', 2)->increment('age', 3);//把id=2的年齡自增3歲,不加數據默認自增一歲
自減
DB::table('goods')->where('id', 3)->decrement('age', 3)//把id=3的年齡自減3歲,不加數據默認自增一歲
自增/自減時候更改其餘數據
DB::table('goods')->where('id', 2)->increment('age', 3, ['name', 'ii']);//自增的同時把name改爲ii
刪除
DB::table('goods')->where('id', '>=', 3)->delete();//刪除id>=3的數據
DB::table('goods')->truncate();//清空數據庫,謹慎使用
查詢
get方法: $res = DB::table('goods')->get();//獲取表的全部數據
dd($res);//Laravel的打印方式
first順序方法: $res = DB::table('goods')->first();//順序獲取表的一條數據
first倒序方法: $res = DB::table('goods')->orderBy('id', 'desc')->first();//倒敘獲取表的一條數據
where方法: $res = DB::table('goods')->where('id', '<=', 1001)->get();//按條件獲取表的數據
where多個條件方法: $res = DB::table('goods')->where('id >= ? and age >= ?', ['1001', '18'])->get();//按多個條件獲取表的數據
pluck返回某個字段:$name = DB::table('goods')->pluck('name');//只返回name這個字段的值
lists返回某個字段:$name = DB::table('goods')->lists('name', 'id');//只返回name這個字段的值,同時能夠指定某個下標
select指定查詢的字段:$name = DB::table('goods')->select('name', 'id')->get();//只查詢name, id 字段的值
chunk限定每次返回幾條:$name = DB::table('goods')->chunk(2, function($goods){ dd($goods); return false;//加上這個條件,就只查詢一次, });//每次只查詢兩條,查完爲止