Laravel 5 架構入門(一)_PHP

來源:互聯網
上載者:User
關鍵字 laravel入門教程 laravel入門 la
Laravel 5 中文文檔:

1. http://laravel-china.org/docs/5.0

2. http://www.golaravel.com/laravel/docs/5.0/

預設條件

本文預設你已經有配置完善的 PHP + MySQL 運行環境,懂得 PHP 網站啟動並執行基礎知識。跟隨本教程走完一遍,你將會得到一個基礎的包含登入的簡單 blog 系統,並將學會如何使用一些強大的 Laravel 外掛程式和 composer 包(Laravel 外掛程式也是 composer 包)。

軟體版本:PHP 5.4+,MySQL 5.1+

本文不推薦完全不懂 PHP 與 MVC 編程的人學習。本文不是 “一步一步跟我做” 教程。本文需要你付出一定的心智去解決一些或大或小的隱藏任務,以達到真正理解 Laravel 運行邏輯的目的。

1. 安裝

許多人被攔在了學習Laravel的第一步,安裝。並不是因為安裝教程有多複雜,而是因為【眾所周知的原因】。在此我推薦一個composer全量中國鏡像:http://pkg.phpcomposer.com/ 。推薦以 “修改 composer 的設定檔” 方式配置。

鏡像配置完成後,切換到你想要放置該網站的目錄下(如 C:\\wwwroot、/Library/WebServer/Documents/、/var/www/html、/etc/nginx/html 等),運行命令:

composer create-project laravel/laravel learnlaravel5

然後,稍等片刻,目前的目錄下就會出現一個叫 learnlaravel5 的檔案夾。

然後將網站根目錄配置為 learnlaravel5/public。

如果你不會配置,建議去學會配置,網上資料很多。如果自暴自棄,可以把 的第 29 行'url' => 'http://localhost', 配置成你的子目錄地址,注意,要一直配置到 ***/learnlaravel5/public。

使用瀏覽器訪問你配置的地址,將看到以下畫面(我在本地配置的地址為 http://fuck.io:88 ):


2. 體驗 Auth 系統並完成安裝

—— 經過上面的過程,Laravel 5 的安裝成功了?

—— 沒有o(╯□╰)o

查看路由檔案 `learnlaravel5/app/Http/routes.php` 的代碼:

Route::get('/', 'WelcomeController@index');Route::get('home', 'HomeController@index');Route::controllers(['auth' => 'Auth\AuthController','password' => 'Auth\PasswordController',]);

跟隨代碼裡的蛛絲馬跡,讓我們訪問 http://fuck.io:88/home (請自行替換網域名稱),結果竟然跳轉到了登陸頁?


沒錯,Laravel 內建了開箱即用的 Auth 系統,連頁面都已經寫好了。

讓我們隨意輸入郵箱和密碼,點擊登入,你很可能得到以下畫面(Mac 或 Linux 下):


為什麼空白?用開發人員工具查看,這個請求的狀態代碼是 500,為什嗎?

因為 `learnlaravel5/storage` 目錄沒有 777 許可權。

執行 shell 命令:

cd learnlaravel5sudo chmod -R 777 storage

重新訪問 http://fuck.io:88/home ,隨意輸入郵箱和密碼,如果你得到以下畫面:


那麼恭喜你~ Laravel 5 安裝成功!

不想配置鏡像的同學,可以使用 Laravel 界非常著名的 安正超 搞的安裝神器:https://github.com/overtrue/latest-laravel

3. 資料庫建立及遷移

Laravel 5 把資料庫配置的地方改到了 `learnlaravel5/.env`,開啟這個檔案,編輯下面四項,修改為正確的資訊:

DB_HOST=localhostDB_DATABASE=laravel5DB_USERNAME=rootDB_PASSWORD=password

推薦建立一個名為 laravel5 的資料庫,為了學習方便,推薦使用 root 賬戶直接操作。

Laravel 已經為我們準備好了 Auth 部分的 migration,運行以下命令執行資料庫遷移操作:

php artisan migrate

得到的結果如下:


如果你運行命令報錯,請檢查資料庫連接設定。

至此,資料庫遷移已完成,你可以開啟 http://fuck.io:88/home 歡快地嘗試註冊、登入啦。

4. 模型 Models

接下來我們將接觸Laravel最為強大的部分,Eloquent ORM,真正提高生產力的地方,借用庫克的一句話:鵝妹子英!

運行一下命令:

php artisan make:model Articlephp artisan make:model Page

> Laravel 4 時代,我們使用 Generator 外掛程式來建立 Model。現在,Laravel 5 已經把 Generator 整合進了 Artisan。

現在,Artisan 幫我們在 `learnlaravel5/app/` 下建立了兩個檔案 `Article.php` 和 `Page.php`,這是兩個 Model 類,他們都繼承了 Laravel Eloquent 提供的 Model 類 `Illuminate\Database\Eloquent\Model`,且都在 `\App` 命名空間下。這裡需要強調一下,用命令列的方式建立檔案,和自己手動建立檔案沒有任何區別,你也可以嘗試自己建立這兩個 Model 類。

Model 即為 MVC 中的 M,翻譯為 模型,負責跟資料庫互動。在 Eloquent 中,資料庫中每一張表對應著一個 Model 類(當然也可以對應多個)。

如果你從其他架構轉過來,可能對這裡一筆帶過的 Model 部分很不適應,沒辦法,是因為 Eloquent 實在太強大了啦,真的沒什麼好做的,繼承一下 Eloquent 類就能實現很多很多功能了。

如果你想深入地瞭解 Eloquent,可以閱讀系列文章:Laravel 5架構學習之Eloquent 關係

接下來進行 Article 和 Page 類對應的 articles 表和 pages表的資料庫遷移,進入 `learnlaravel5/database/migrations` 檔案夾。

在 ***_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();});

然後執行命令:

php artisan migrate

成功以後, tables 表和 pages 表已經出現在了資料庫裡,去看看吧~

5. 資料庫填充 Seeder

在 `learnlaravel5/database/seeds/` 下建立 `PageTableSeeder.php` 檔案,內容如下:

<?phpuse Illuminate\Database\Seeder;use App\Page;class PageTableSeeder extends Seeder { public function run() {  DB::table('pages')->delete();  for ($i=0; $i < 10; $i++) {   Page::create([    'title'  => 'Title '.$i,    'slug'  => 'first-page',    'body'  => 'Body '.$i,    'user_id' => 1,   ]);  } }}

然後修改同一級目錄下的 `DatabaseSeeder.php`中:

// $this->call('UserTableSeeder');

這一句為

$this->call('PageTableSeeder');

然後運行命令進行資料填充:

composer dump-autoloadphp artisan db:seed

去看看 pages 表,是不是多了十行資料?

本教程範例程式碼見:https://github.com/johnlui/Learn-Laravel-5

大家在任何地方卡住,最快捷的解決方式就是去看我的範例程式碼。

以上所述就是本文的全部內容了,希望能夠對大家學習Laravel5架構有所協助。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.