Laravel 4 初級(jí)教程之安裝及入門(mén)
0. 默認(rèn)條件
本文默認(rèn)你已經(jīng)有配置完善的PHP+MySQL運(yùn)行環(huán)境,懂得PHP網(wǎng)站運(yùn)行的基礎(chǔ)知識(shí)。跟隨本教程走完一遍,你將會(huì)得到一個(gè)基礎(chǔ)的包含登錄的簡(jiǎn)單blog系統(tǒng),并將學(xué)會(huì)如何使用一些強(qiáng)大的Laravel插件和composer包(Laravel插件也是composer包)。
軟件版本:PHP 5.4+,MySQL 5.1+
1. 安裝
許多人被攔在了學(xué)習(xí)Laravel的第一步,安裝。并不是因?yàn)榘惭b教程有多復(fù)雜,而是因?yàn)椤颈娝苤脑颉俊T诖宋彝扑]一個(gè)composer全量中國(guó)鏡像:http://pkg.phpcomposer.com/。推薦“修改 composer 的配置文件”方式配置。我在寫(xiě)此教程時(shí)用此鏡像測(cè)試,安裝失敗,若你也出現(xiàn)這種情況,可以嘗試另一個(gè)composer中國(guó)鏡像:http://composer-proxy.com/。
鏡像配置完成后,切換到你想要放置該網(wǎng)站的目錄下,運(yùn)行命令:
composer create-project laravel/laravel learnlaravel
然后,稍等片刻,當(dāng)前目錄下就會(huì)出現(xiàn)一個(gè)叫 learnlaravel 的文件夾,這時(shí)候如果你通過(guò)瀏覽器訪問(wèn) learnlaravel/public/ 目錄,基本都會(huì)顯示 Error in exception handler. ,這是因?yàn)?learnlaravel/app/storage 目錄沒(méi)有777權(quán)限,設(shè)置好權(quán)限即可看見(jiàn)頁(yè)面如下圖:

恭喜你~Laravel安裝成功!
不想配置鏡像的同學(xué),可以使用 Laravel 界非常著名的超超搞得安裝神器:https://github.com/overtrue/latest-laravel
2. 必要插件安裝及配置
我們使用著名的Sentry插件來(lái)構(gòu)建登錄等權(quán)限驗(yàn)證系統(tǒng)。
打開(kāi) ./composer.json ,變更為:
"require": {
"laravel/framework": "4.2.*",
"cartalyst/sentry": "2.1.4"
},
然后,在項(xiàng)目根目錄下運(yùn)行命令
composer update
然后稍等一會(huì)兒,它會(huì)提示 cartalyst/sentry 2.1.4安裝完成。
同理,我們將安裝一個(gè)開(kāi)發(fā)用的非常強(qiáng)大的插件,way/generators,這是它在composer庫(kù)中的名字。在 composer.json中增加:
"require-dev": {
"way/generators": "~2.0"
},
放在“require”的下面。
運(yùn)行 composer update,之后在 ./app/config/app.php 中增加配置:
'Way\Generators\GeneratorsServiceProvider'
安裝完成過(guò),在命令行中運(yùn)行 php artisan,就可以看到這個(gè)插件帶來(lái)的許多新的功能。
有人會(huì)問(wèn),為什么用了國(guó)內(nèi)鏡像還是如此之慢?其實(shí)composer在update的時(shí)候最慢的地方并不是下載,而是下載之前的依賴(lài)關(guān)系解析,由于Laravel依賴(lài)的composer包非常之多,PHP腳本的執(zhí)行速度又比較慢,所以每次update等個(gè)兩三分鐘很正常,習(xí)慣就好。
3. 數(shù)據(jù)庫(kù)建立及遷移
數(shù)據(jù)庫(kù)配置文件位于 ./app/config/database.php,我們需要把“connections”中的“mysql”項(xiàng)改成我們需要的配置。下面是我的配置:
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'laravel',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => 'l4_',
),
prefix為表前綴,這個(gè)Laravel會(huì)幫我們自動(dòng)維護(hù),大膽寫(xiě)上不用擔(dān)心。
這時(shí)候你需要去數(shù)據(jù)庫(kù)建立此數(shù)據(jù)庫(kù),然后在命令行中輸入:
php artisan migrate --package=cartalyst/sentry
執(zhí)行完成后,你的數(shù)據(jù)庫(kù)里就有了5張表,這是sentry自己建立的。sentry在Laravel4下的配置詳情見(jiàn) https://cartalyst.com/manual/sentry#laravel-4,我大致說(shuō)一下:
在 ./app/config/app.php 中 相應(yīng)的位置 分別增加以下兩行:
'Cartalyst\Sentry\SentryServiceProvider',
'Sentry' => 'Cartalyst\Sentry\Facades\Laravel\Sentry',
權(quán)限系統(tǒng)的數(shù)據(jù)庫(kù)配置到此為止。
我們的簡(jiǎn)單blog系統(tǒng)將會(huì)有兩種元素,Article和Page,下面我們將創(chuàng)建articles和pages數(shù)據(jù)表,命令行運(yùn)行:
php artisan migrate:make create_articles_table --create=articles
php artisan migrate:make create_pages_table --create=pages
這時(shí)候,去到 ./app/database/migrations,將會(huì)看到多出了兩個(gè)文件,這就是數(shù)據(jù)庫(kù)遷移文件,過(guò)一會(huì)我們將操作artisan將這兩個(gè)文件描述的兩張表變成數(shù)據(jù)庫(kù)中真實(shí)的兩張表,放心,一切都是自動(dòng)的。
下面,在***_create_articles_table.php中修改:
Schema::create('articles', function(Blueprint $table)
{
$table->increments('id');
$table->string('title');
$table->string('slug')->nullable();
$table->text('body')->nullable();
$table->string('image')->nullable();
$table->integer('user_id');
$table->timestamps();
});
在***_create_pages_table.php中修改:
Schema::create('pages', function(Blueprint $table)
{
$table->increments('id');
$table->string('title');
$table->string('slug')->nullable();
$table->text('body')->nullable();
$table->integer('user_id');
$table->timestamps();
});
下面,就是見(jiàn)證奇跡的時(shí)刻,在命令行中運(yùn)行:
php artisan migrate
這時(shí)候數(shù)據(jù)庫(kù)中的articles表和pages表就建立完成了。
4. 模型 Models
接下來(lái)我們將接觸Laravel最為強(qiáng)大的部分,Eloquent ORM,真正提高生產(chǎn)力的地方,借用庫(kù)克的話(huà)說(shuō)一句,鵝妹子英!
我們?cè)诿钚羞\(yùn)行下列語(yǔ)句以創(chuàng)建兩個(gè)model:
php artisan generate:model article
php artisan generate:model page
這時(shí)候,在 ./app/models/ 下就出現(xiàn)了兩個(gè)model文件。這兩個(gè)類(lèi)繼承了Laravel提供的核心類(lèi) \Eloquent。
5. 數(shù)據(jù)庫(kù)填充
分別運(yùn)行下列命令:
php artisan generate:seed page
php artisan generate:seed article
這時(shí),在 ./app/database/seeds/ 下就出現(xiàn)了兩個(gè)新的文件,這就是我們的數(shù)據(jù)庫(kù)填充文件。Laravel提供自動(dòng)數(shù)據(jù)庫(kù)填充,十分方便。
generator默認(rèn)使用Faker\Factory作為隨機(jī)數(shù)據(jù)生成器,所以我們需要安裝這個(gè)composer包,地址是 https://packagist.org/packages/fzaninotto/faker ,跟generator一起安裝在 require-dev 中即可。具體安裝請(qǐng)自行完成,可以參考Sentry和Generator,這是第一次練習(xí)。
接下來(lái),分別更改這兩個(gè)文件:
Article::create([
'title' => $faker->sentence($nbWords = 6),
'slug' => 'first-post',
'body' => $faker->paragraph($nbSentences = 5),
'user_id' => 1,
]);
Page::create([
'title' => $faker->sentence($nbWords = 6),
'slug' => 'first-page',
'body' => $faker->paragraph($nbSentences = 5),
'user_id' => 1,
]);
然后,我們需要在 DatabaseSeeder.php 中增加兩行,讓Laravel在seed的時(shí)候會(huì)帶上我們新增的這兩個(gè)seed文件。
$this->call('ArticleTableSeeder');
$this->call('PageTableSeeder');
下面就要真正的把數(shù)據(jù)填充進(jìn)數(shù)據(jù)庫(kù)了:
php artisan db:seed
操作完成以后去數(shù)據(jù)庫(kù)看看,數(shù)據(jù)已經(jīng)填充進(jìn)去了,article和page各10行。
相關(guān)文章
php解壓文件代碼實(shí)現(xiàn)php在線(xiàn)解壓
這篇文章主要介紹了php解壓文件代碼,根據(jù)這個(gè)代碼可以實(shí)現(xiàn)php在線(xiàn)解壓功能,需要的朋友可以參考下2014-02-02
PHP實(shí)現(xiàn)微信提現(xiàn)(企業(yè)付款到零錢(qián))
這篇文章主要為大家詳細(xì)介紹了PHP實(shí)現(xiàn)微信提現(xiàn),企業(yè)付款到零錢(qián),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
php實(shí)現(xiàn)購(gòu)物車(chē)產(chǎn)品刪除功能(2)
這篇文章主要為大家詳細(xì)介紹了php實(shí)現(xiàn)購(gòu)物車(chē)產(chǎn)品刪除功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03
thinkphp模板賦值與替換實(shí)例簡(jiǎn)述
這篇文章主要介紹了thinkphp模板賦值與替換的方法,以實(shí)例形式簡(jiǎn)述了模板復(fù)制的兩種簡(jiǎn)單方法,以及模板替換中的特殊字符串說(shuō)明與用法實(shí)例,是使用頻率比較高的技巧,需要的朋友可以參考下2014-11-11
php并發(fā)加鎖問(wèn)題分析與設(shè)計(jì)代碼實(shí)例講解
這篇文章主要介紹了php并發(fā)加鎖問(wèn)題分析與設(shè)計(jì)代碼實(shí)例講解,有感興趣的同學(xué)可以跟著研究學(xué)習(xí)下2021-02-02
PHP實(shí)現(xiàn)簡(jiǎn)單網(wǎng)站訪客統(tǒng)計(jì)的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于PHP實(shí)現(xiàn)簡(jiǎn)單網(wǎng)站訪客統(tǒng)計(jì)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01

