1. 程式人生 > >Laravel 4 系列入門教程(一)【最適合中國人的Laravel教程】

Laravel 4 系列入門教程(一)【最適合中國人的Laravel教程】

每一個教程完成,我將會git commit一次。

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

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 的配置檔案” 方式配置。

映象配置完成後,切換到你想要放置該網站的目錄下,執行命令:

composer create-project laravel/laravel learnlaravel 4.2.11

然後,稍等片刻,當前目錄下就會出現一個叫 learnlaravel 的資料夾,這時候如果你通過瀏覽器訪問 learnlaravel/public/ 目錄,基本都會顯示 Error in exception handler.  ,這是因為 learnlaravel/app/storage 目錄沒有 777 許可權,設定好許可權即可看見頁面如下圖:

QQ20140930-3.jpg

恭喜你~Laravel安裝成功!

2. 必要外掛安裝及配置

我們使用著名的Sentry外掛來構建登入等許可權驗證系統。

開啟 ./composer.json ,變更為:

"require": {
	"laravel/framework": "4.2.*",
	"cartalyst/sentry": "2.1.4"
},

然後,在專案根目錄下執行命令

composer update

然後稍等一會兒,它會提示 cartalyst/sentry 2.1.4安裝完成。

同理,我們將安裝一個開發用的非常強大的外掛,way/generators,這是它在composer庫中的名字。在 composer.json中增加:

"require-dev": {
    "way/generators": "~2.0"
},

和“require”同級,放在下面,不是裡面哦~。

執行 composer update,之後在 ./app/config/app.php 中 恰當的位置 增加配置:

'Way\Generators\GeneratorsServiceProvider'

安裝完成過,在命令列中執行 php artisan,就可以看到這個外掛帶來的許多新的功能。

有人會問,為什麼用了國內映象還是如此之慢?其實composer在update的時候最慢的地方並不是下載,而是下載之前的依賴關係解析,由於Laravel依賴的composer包非常之多,PHP指令碼的執行速度又比較慢,所以每次update等個兩三分鐘很正常,習慣就好。

3. 資料庫建立及遷移

資料庫配置檔案位於 ./app/config/database.php,我們需要把“connections”中的“mysql”項改成我們需要的配置。下面是我的配置:

'mysql' => array(
	'driver'    => 'mysql',
	'host'      => 'localhost',
	'database'  => 'laravel',
	'username'  => 'root',
	'password'  => 'password',
	'charset'   => 'utf8',
	'collation' => 'utf8_unicode_ci',
	'prefix'    => 'l4_',
),

prefix為表字首,這個Laravel會幫我們自動維護,大膽寫上不用擔心。

這時候你需要去資料庫建立此資料庫,然後在命令列中輸入:

php artisan migrate --package=cartalyst/sentry

在 ./app/config/app.php 中 相應的位置 分別增加以下兩行:

'Cartalyst\Sentry\SentryServiceProvider',
'Sentry' => 'Cartalyst\Sentry\Facades\Laravel\Sentry',

許可權系統的資料庫配置到此為止。

我們的簡單blog系統將會有兩種元素,Article和Page,下面我們將建立articles和pages資料表,命令列執行:

php artisan migrate:make create_articles_table --create=articles
php artisan migrate:make create_pages_table --create=pages

這時候,去到 ./app/database/migrations,將會看到多出了兩個檔案,這就是資料庫遷移檔案,過一會我們將操作artisan將這兩個檔案描述的兩張表變成資料庫中真實的兩張表,放心,一切都是自動的。

下面,在***_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

這時候資料庫中的articles表和pages表就建立完成了。

4. 模型 Models

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

我們在命令列執行下列語句以建立兩個model:

php artisan generate:model article
php artisan generate:model page

這時候,在 app/models/ 下就出現了兩個檔案 Article.php 和 Page.php,這是兩個 Model 類,他們都繼承了Laravel提供的核心類 \Eloquent。這裡需要強調一下,用命令列的方式建立檔案,和自己手動建立檔案沒有任何區別,你也可以嘗試自己建立這兩個 Model 類哦。

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

如果你從其他框架轉過來,可能對這裡一筆帶過的 Model 部分很不適應,沒辦法,是因為 Eloquent 實在太強大了啦,真的沒什麼好做的,繼承一下 Eloquent 類就能實現很多很多功能了。詳見 Eloquent 系列教程:深入理解 Laravel Eloquent(一)——基本概念及用法

5. 資料庫填充

分別執行下列命令:

php artisan generate:seed page
php artisan generate:seed article

這時,在 ./app/database/seeds/ 下就出現了兩個新的檔案,這就是我們的資料庫填充檔案。Laravel提供自動資料庫填充,十分方便。

generator預設使用Faker\Factory作為隨機資料生成器,所以我們需要安裝這個composer包,地址是 https://packagist.org/packages/fzaninotto/faker ,跟generator一起安裝在 require-dev 中即可。具體安裝請自行完成,可以參考Sentry和Generator,這是第一次練習。

接下來,分別更改這兩個檔案:

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的時候會帶上我們新增的這兩個seed檔案。

$this->call('ArticleTableSeeder');
$this->call('PageTableSeeder');

下面就要真正的把資料填充進資料庫了:

php artisan db:seed

操作完成以後去資料庫看看,資料已經填充進去了,article和page各10行。

相關推薦

Laravel 4 系列入門教程適合中國人Laravel教程

每一個教程完成,我將會git commit一次。 大家在任何地方卡住,最快捷的解決方式就是去看我的示例程式碼。 0. 預設條件 本文預設你已經有配置完善的PHP+MySQL執行環境,懂得PHP網站執行的基礎知識。跟隨本教程走完一遍,你將會得到一個基礎的包含

Laravel 系列入門教程適合中國人Laravel 教程

在本篇文章中,我們將嘗試構建一個帶後臺的簡單部落格系統。我們將會使用到 路由、MVC、Eloquent ORM 和 blade 檢視系統。 簡單部落格系統規劃 我們在教程一中已經新建了一個繼承自 Eloquent Model 類的 Article 類,使用 migration 建立了資料表並使用 seed

2016 版 Laravel 系列入門教程適合中國人Laravel 教程

在本篇文章中,我們將嘗試構建一個帶後臺的簡單部落格系統。我們將會使用到 路由、MVC、Eloquent ORM 和 blade 檢視系統。 原文地址:http://www.cnblogs.com/grimm/p/5627004.html 簡單部落格系統規劃 我們在教程一中已經新建了一個 Eloquent

Laravel 5 系列入門教程適合中國人Laravel 教程完結

本文是本系列教程的完結篇,我們將一起給 Page 加入評論功能,讓遊客在前臺頁面可以檢視、提交、回覆評論,同時我們將在後臺完善評論管理功能,可以刪除、編輯評論。Page 和評論將使用 Eloquent 提供的“一對多關係”。最終,我們將得到一個個人部落格系統的雛形,並佈

2016 版 Laravel 系列入門教程適合中國人Laravel 教程

本篇文章中,我將跟寶寶們一起學習 Laravel 框架最重要的部分——路由系統。 如果你讀過舊的基於 Laravel 5.0 版本的此教程,你會發現那篇文章裡大書特書的 Auth 系統構建已經被 Laravel 捎帶手給解決了。在更早的 Laravel 4 版本的教程中,

反向教學系列之——Django入門不需知道web框架

Django 教程 反向教學 一派胡言 用這東西最終是建網站的,或者是更一般意義的服務器。服務器麽,就是如果用別的電腦(“客戶機”)給它發請求,它會返回一些東西——如果給隨便某個機器發信息,它自然未必理你。要想某機器回應你,得滿足這些條件——它不處在關機狀態它能收到你的信息,你也能收到它的信息

ASP.NET Identity入門系列教程 初識Identity

摘要 通過本文你將瞭解ASP.NET身份驗證機制,表單認證的基本流程,ASP.NET Membership的一些弊端以及ASP.NET Identity的主要優勢。 目錄 身份驗證(Authentication)和授權(Authorization) 我們先來思考一個問題:如何構建安全的WEB應

Flask系列教程-----------入門

Flask是一個基於Python的web框架,它的設計目的是提供Web開發所需的最小功能子集。 Flask與別的框架(尤其是採用其他程式語言的框架)的不同之處在於:它沒有繫結諸如資料庫查詢或者表單處理等功能庫,以及它們所組成的整個生態系統。它傾向於對這些功能的實現方式不做

API 系列教程:基於 Laravel 5.5 構建 和 測試 RESTful API

隨著移動開發和 JavaScript 框架的日益流行,使用 RESTful API 在資料層和客戶端之間構建互動介面逐漸成為最佳選擇。 在本系列教程中,將會帶領大家基於 Laravel 5.5 來構建並測試帶認證功能的 RESTful API。 RESTful API 先要了解什麼是

Spring Data Jpa系列教程--------入門

大渣好,我是小小書生,現在開始,我們來學習船新的一門技術,SpringDataJpa,它是一個。。額。。(我百度一下) JPA(Java Persistence API)是Sun官方提出的Java持久化規範。它為Java開發人員提供了一種物件/關聯對映工具來管理Java

資料探勘入門系列教程之親和性分析

資料探勘入門系列教程(一)之親和性分析 教程系列簡介 系列地址:https://www.cnblogs.com/xiaohuiduan/category/1661541.html 該教程為入門教程,為博主學習資料探勘的學習路徑步驟。教程為入門教程,從最簡單的開始。使用的程式語言為Pytho

Yii2框架RESTful API教程 - 快速入門

比較 exp values cnblogs -- restful extends .cn pat 前不久做一個項目,是用Yii2框架寫一套RESTful風格的API,就去查了下《Yii 2.0 權威指南 》,發現上面寫得比較簡略。所以就在這裏寫一篇教程貼,希望幫助剛接觸Yi

ThinkJS框架入門詳細教程開發環境

install devel 版本 開發 conf doc 瀏覽器 打開 變量 一、前端標配環境 1、nodeJS正確安裝,可以參考:http://www.cnblogs.com/chengxs/p/6221393.html 2、git正確安裝,可以參考:http://w

jQuery EasyUI快速入門實戰教程-入門

jquery javascript easyui 1、jQuery EasyUI概述jQuery EasyUI是一組基於jQuery的UI插件集合體,而jQuery EasyUI的目標就是幫助web開發者更輕松的打造出功能豐富並且美觀的UI界面。開發者不需要編寫復雜的javascript,也不需要

RabbitMQ消息隊列系列教程認識RabbitMQ

ref sage 操作系統 企業級 連接 通信 集群 消息中間件 消息 摘要 RabbitMQ是最為流行的消息中間件,是處理高並發業務的利器。本系列教程,將跟大家一起學習RabbitMQ。 目錄 RabbitMQ是什麽? RabbitMQ的特點是什麽? 一

JavaScript基礎入門教程

構造 圖片 def type 屬於 string 意思 原則 原始類型 js的數據類型   雖然js屬於弱類型語言,但其總共有6種數據類型。弱類型的意思是定義的變量沒有類型的區分,比如先執行 var num=123; 定義了一變量num存儲整數,可接下來執行 num="he

Docker入門教程介紹

操作 AC font start 一個 namespace com 下載地址 div 1.1docker是什麽: Docker是通過內核虛擬化技術(namespaces及cgroups cpu、內存、磁盤io等)來提供容器的資源隔離與安全保障等。由於Docker通過操作系統

Asp.net Core IdentityServer4 入門教程:概念解析

什麽 ica 統一 理解 給他 分享 目錄 .net 系統 目錄 1、IdentityServer4 是什麽 2、什麽是OpenID和OAuth 2.0協議 3、IdentityServer4 可以用來做什麽 其他 1、IdentityServer4 是什麽 Ident

CMake入門教程

之前的一篇部落格介紹了CMake一些簡單的基礎情況:CMake的簡介、安裝以及基本的使用 現在一起來學習一下CMakeLists的基礎命令。 ※※※※※※※※※※※※※※※※※※※※※※CMake的基本使用語法※※※※※※※※※※※※※※※※※※※※※※※※※※※ ①CMake使用$

Koa快速入門教程

Koa 是由 Express 原班人馬打造的,致力於成為一個更小、更富有表現力、更健壯的 Web 框架,採用了async和await的方式執行非同步操作。 Koa有v1.0與v2.0兩個版本,隨著node對async和await的支援,Koa2的正式釋出,本文Koa均