安裝 Laravel:
Laravel 使用 [Composer] 來(lái)管理代碼依賴胆敞。所以着帽,在使用 Laravel 之前,請(qǐng)先確認(rèn)你的電腦上安裝了 Composer移层。
方法一:通過(guò)laravel安裝器安裝:
在cmd執(zhí)行 composer global require "laravel/installer"
請(qǐng)確定你已將 ~/.composer/vendor/bin 路徑加到 PATH仍翰,只有這樣系統(tǒng)才能找到 laravel 的執(zhí)行文件。
一旦安裝完成观话,就可以使用 laravel new 命令在指定目錄創(chuàng)建一個(gè)新的 Laravel 項(xiàng)目予借,例如:laravel new blog 將會(huì)在當(dāng)前目錄下創(chuàng)建一個(gè)叫 blog 的目錄,此目錄里面存放著新安裝的 Laravel 和代碼依賴频蛔。這個(gè)方法的安裝速度比通過(guò) Composer 安裝要快上許多
方法二:通過(guò)composer的laravel:
在要安裝的根目錄下執(zhí)行composer create-project --prefer-dist laravel/laravel blog "5.2.*" //本次是安裝5.2
———————————————————————————————————————
配置:
1.首先
確認(rèn)服務(wù)器訪問(wèn)項(xiàng)目是否映射到public目錄,其次確認(rèn).env加密串文件有無(wú)生成,相關(guān)的目錄權(quán)限是不是完全控制或775
app/config/app.php 文件中的 debug 選項(xiàng)設(shè)置為 true (注:開(kāi)啟開(kāi)發(fā)模式灵迫,更友好的開(kāi)發(fā)提示);
可以使用config('app.timezone');來(lái)獲取config目錄下任意配置文件配置項(xiàng)的值
并且可以使用config(['app.timezone' => 'America/Chicago']);來(lái)在運(yùn)行時(shí)更改
2.了解目錄結(jié)構(gòu):
文件/文件夾
作用
- app/
包含了站點(diǎn)的 controllers(控制器)晦溪,models(模型)瀑粥,views(視圖)和 assets(資源)。這些是網(wǎng)站運(yùn)行的主要代碼三圆,你會(huì)將你大部分的時(shí)間花在這些上面利凑。本文主要關(guān)注的是這個(gè)文件夾。 - bootstrap
用來(lái)存放系統(tǒng)啟動(dòng)時(shí)需要的文件嫌术,這些文件會(huì)被如 index.php 這樣的文件調(diào)用。 - public
這個(gè)文件夾是唯一外界可以看到的牌借,是必須指向你 web 服務(wù)器的目錄度气。它含有 laravel 框架核心的引導(dǎo)文件 index.php,這個(gè)目錄也可用來(lái)存放任何可以公開(kāi)的靜態(tài)資源膨报,如 css磷籍,Javascript,images 等现柠。 - vendor
用來(lái)存放所有的第三方代碼院领,在一個(gè)典型的 Laravel 應(yīng)用程序,這包括 Laravel 源代碼及其相關(guān)够吩,并含有額外的預(yù)包裝功能的插件比然。 - app/config/
配置應(yīng)用程序的運(yùn)行時(shí)規(guī)則、 數(shù)據(jù)庫(kù)周循、 session等等强法。包含大量的用來(lái)更改框架的各個(gè)方面的配置文件万俗。大部分的配置文件中返回的選項(xiàng)關(guān)聯(lián)PHP數(shù)組。 - app/config/app.php
各種應(yīng)用程序級(jí)設(shè)置饮怯,即時(shí)區(qū)闰歪、 區(qū)域設(shè)置(語(yǔ)言環(huán)境)、 調(diào)試模式和獨(dú)特的加密密鑰蓖墅。 - app/config/auth.php
控制在應(yīng)用程序中如何進(jìn)行身份驗(yàn)證库倘,即身份驗(yàn)證驅(qū)動(dòng)程序。 - app/config/cache.php
如果應(yīng)用程序利用緩存來(lái)加快響應(yīng)時(shí)間论矾,要在此配置該功能教翩。 - app/config/compile.php
在此處可以指定一些額外類,去包含由‘a(chǎn)rtisan optimize’命令聲稱的編譯文件拇囊。這些應(yīng)該是被包括在基本上每個(gè)請(qǐng)求到應(yīng)用程序中的類迂曲。 - app/config/database.php
包含數(shù)據(jù)庫(kù)的相關(guān)配置信息,即默認(rèn)數(shù)據(jù)庫(kù)引擎和連接信息寥袭。 - app/config/mail.php
為電子郵件發(fā)件引擎的配置文件路捧,即 SMTP 服務(wù)器,F(xiàn)rom:標(biāo)頭 - app/config/session.php
控制Laravel怎樣管理用戶sessions,即session driver, session lifetime传黄。 - app/config/view.php
模板系統(tǒng)的雜項(xiàng)配置杰扫。 - app/controllers
包含用于提供基本的邏輯、 數(shù)據(jù)模型交互以及加載應(yīng)用程序的視圖文件的控制器類膘掰。 - app/database/migrations/
包含一些 PHP 類章姓,允許 Laravel更新當(dāng)前數(shù)據(jù)庫(kù)的架構(gòu)并同時(shí)保持所有版本的數(shù)據(jù)庫(kù)的同步。遷移文件是使用Artisan工具生成的识埋。 - app/database/seeds/
包含允許Artisan工具用關(guān)系數(shù)據(jù)來(lái)填充數(shù)據(jù)庫(kù)表的 PHP 文件凡伊。 - app/lang/
PHP 文件,其中包含使應(yīng)用程序易于本地化的字符串的數(shù)組窒舟。默認(rèn)情況下目錄包含英語(yǔ)語(yǔ)言的分頁(yè)和表單驗(yàn)證的語(yǔ)言行系忙。 - app/models/
模型是代表應(yīng)用程序的信息(數(shù)據(jù))和操作數(shù)據(jù)的規(guī)則的一些類。在大多數(shù)情況下惠豺,數(shù)據(jù)庫(kù)中的每個(gè)表將對(duì)應(yīng)應(yīng)用中的一個(gè)模型银还。應(yīng)用程序業(yè)務(wù)邏輯的大部分將集中在模型中。 - app/start/
包含與Artisan工具以及全球和本地上下文相關(guān)的自定義設(shè)置洁墙。 - app/storage/
該目錄存儲(chǔ)Laravel各種服務(wù)的臨時(shí)文件蛹疯,如session, cache, compiled view templates。這個(gè)目錄在web服務(wù)器上必須是可以寫入的热监。該目錄由Laravel維護(hù)捺弦,我們可以不關(guān)心。 - app/tests/
該文件夾給你提供了一個(gè)方便的位置,用來(lái)做單元測(cè)試羹呵。如果你使用PHPUnit骂际,你可以使用Artisan工具一次執(zhí)行所有的測(cè)試。 - app/views/
該文件夾包含了控制器或者路由使用的HTML模版冈欢。請(qǐng)注意歉铝,這個(gè)文件夾下你只能放置模版文件。其他的靜態(tài)資源文件如css, javascript和images文件應(yīng)該放在/public文件夾下凑耻。 - app/routes.php
這是您的應(yīng)用程序的路由文件太示,其中包含路由規(guī)則,告訴 Laravel 如何將傳入的請(qǐng)求連接到路由處理的閉包函數(shù)香浩、 控制器和操作类缤。該文件還包含幾個(gè)事件聲明,包括錯(cuò)誤頁(yè)的邻吭,可以用于定義視圖的composers餐弱。 - app/filters.php
此文件包含各種應(yīng)用程序和路由篩選方法,用來(lái)改變您的應(yīng)用程序的結(jié)果囱晴。Laravel 具有訪問(wèn)控制和 XSS 保護(hù)的一些預(yù)定義篩選器膏蚓。
3.設(shè)置環(huán)境變量:
應(yīng)用程序常常需要根據(jù)不同的運(yùn)行環(huán)境設(shè)置不同的值。只需通過(guò) .env 配置文件定義不同的環(huán)境變量值,即可控制環(huán)境,當(dāng)你的應(yīng)用程序收到請(qǐng)求時(shí)畸写,這個(gè)文件所有的變量都會(huì)被加載到 PHP 超級(jí)全局變量 $_ENV 里驮瞧。你可以使用輔助函數(shù) env 來(lái)獲取這些變量的值。
例如:
'debug' => env('APP_DEBUG', false),//第二個(gè)參數(shù)為獲取不到的返回值
應(yīng)用程序的當(dāng)前環(huán)境是由 .env
文件中的 APP_ENV
變量所決定的枯芬。你可以通過(guò) App
的environment
方法來(lái)獲取該值:
作用去根據(jù)環(huán)境(local or production )加載不同的配置论笔、調(diào)試日志
$environment = App::environment();
4.配置路由到控制器
app/controllers定義控制器繼承Controllers編輯具體邏輯
在app/routes.php定義路由規(guī)則: 有3種寫法:
Route::get('/hello', 'TestController@hello');//控制器@方法
Route::get('/hello',['uses'=>'TestController@hello']);
Route::any('/hello',['uses'=>"TestController@hello']);//多種請(qǐng)求支持的路由
5.新增視圖(前后端分離時(shí)不適用)
在resources\views下新建控制器下文件夾包含blade.php文件并定義html頁(yè)面
在控制器使用view('文件名/視圖名')輸出視圖
并且模板文件可以帶變量并在視圖使用{${}}EL表達(dá)式輸出
Laravel 使用了 Blade 布局 來(lái)讓不同頁(yè)面共用這些相同的功能。
.blade.php
擴(kuò)展名會(huì)告知框架使用 [Blade 模板引擎] 渲染此視圖千所。當(dāng)然狂魔,你可以在 Laravel 使用純 PHP 的模版。不過(guò)淫痰,Blade 提供了更方便的方式來(lái)編寫干凈毅臊、簡(jiǎn)潔的模板。特殊的 Blade 命令可以在網(wǎng)頁(yè)中注入內(nèi)容黑界。
//Controller中
return view('Test/hello');
return view('Test/hello',['name'=>'BoB','age'=>18]);
6.新建模型
模型即在app下的php文件
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
//指定數(shù)據(jù)表
protected Stable=‘student‘;
//指定id
protected $primaryKey=‘id‘皂林;
}
7.數(shù)據(jù)庫(kù)操作:
Laravel中提供了DB facade(原始查找)朗鸠,查找構(gòu)造器,Eloquent ORM三種操作方法
DB facade:
———————————————————————————————————————
通過(guò)DB::select DB::insert配合?占位符等運(yùn)行sql原生查詢
DB:transaction管理事務(wù)
DB::statement管理無(wú)返回的數(shù)據(jù)庫(kù)操作
使用多個(gè)數(shù)據(jù)庫(kù)連接的時(shí)候础倍,可以使用DB門面的connection方法訪問(wèn)每個(gè)連接,連接名與參數(shù)在config/database.php中定義
查詢構(gòu)建器
———————————————————————————————————————
數(shù)據(jù)庫(kù)查詢構(gòu)建器提供了一個(gè)方便的烛占、平滑的接口來(lái)創(chuàng)建和運(yùn)行數(shù)據(jù)庫(kù)查詢:
DB::table('表名')為給定表返回一個(gè)查詢構(gòu)建器,允許你在查詢上鏈接更多約束條件并最終返回查詢結(jié)果
具體的操作針對(duì)查詢構(gòu)建器:
first()獲取一行,get獲取符合條件的所有
比如使用where來(lái)限定條件
chunk方法處理結(jié)果集部分并設(shè)置閉包進(jìn)行操作
lists方法限定列,等等,更多花樣待探索, 但個(gè)人覺(jué)得, 比如chunk方法閉包處理, 在具體業(yè)務(wù)邏輯可能不太常用, 所以TP框架里沒(méi)有類似的方法, 但laravel有, 雖然用起來(lái)復(fù)雜了,但是這也是性能的體現(xiàn)。
Eloquent ORM (重點(diǎn)):
注意:由于Eloquent模型本質(zhì)上就是 查詢構(gòu)建器")忆家,你可以在Eloquent查詢中使用查詢構(gòu)建器的所有方法犹菇。
———————————————————————————————————————
Laravel所自帶的Eloqulent ORM是一個(gè)非常優(yōu)美簡(jiǎn)潔的ActiveRecord實(shí)現(xiàn),用來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的操作他的每個(gè)數(shù)據(jù)的表都有對(duì)應(yīng)的模型(model)用于數(shù)據(jù)表的交互芽卿。
Eloquent模型約定(表名揭芍、主鍵、操作的記錄時(shí)間戳(可設(shè)置不要)):
use引入約定模型卸例,然后使用 模型名::即可調(diào)用構(gòu)建器所有方法称杨,與Eloqulent自己的實(shí)現(xiàn)方法
Eloqulent比較關(guān)鍵的作用域功能,通過(guò)在model中定義的scope前綴的作用域方法(可帶參)來(lái)實(shí)現(xiàn)對(duì)查詢結(jié)果的篩選與操作
Eloqulent軟刪除:Eloquent還可以對(duì)模型進(jìn)行“軟刪除”筷转。當(dāng)模型被軟刪除后姑原,它們并沒(méi)有真的從數(shù)據(jù)庫(kù)刪除,而是在模型上設(shè)置一個(gè)deleted_at屬性并插入數(shù)據(jù)庫(kù)呜舒,
要啟用模型的軟刪除功能锭汛,可以使用模型上的Illuminate\Database\Eloquent\SoftDeletestrait并添加deleted_at列到$dates屬性:
啟用后,當(dāng)調(diào)用模型的delete方法時(shí)袭蝗,deleted_at列將被設(shè)置為當(dāng)前日期和時(shí)間唤殴,并且,當(dāng)查詢一個(gè)使用軟刪除的模型時(shí)呻袭,被軟刪除的模型將會(huì)自動(dòng)從查詢結(jié)果中排除眨八。