Laravel 4 初级教程之安装及入门


Posted in PHP onOctober 30, 2014

0. 默认条件

本文默认你已经有配置完善的PHP+MySQL运行环境,懂得PHP网站运行的基础知识。跟随本教程走完一遍,你将会得到一个基础的包含登录的简单blog系统,并将学会如何使用一些强大的Laravel插件和composer包(Laravel插件也是composer包)。

软件版本:PHP 5.4+,MySQL 5.1+

1. 安装

许多人被拦在了学习Laravel的第一步,安装。并不是因为安装教程有多复杂,而是因为【众所周知的原因】。在此我推荐一个composer全量中国镜像:http://pkg.phpcomposer.com/。推荐“修改 composer 的配置文件”方式配置。我在写此教程时用此镜像测试,安装失败,若你也出现这种情况,可以尝试另一个composer中国镜像:http://composer-proxy.com/。

镜像配置完成后,切换到你想要放置该网站的目录下,运行命令:

composer create-project laravel/laravel learnlaravel

然后,稍等片刻,当前目录下就会出现一个叫 learnlaravel 的文件夹,这时候如果你通过浏览器访问 learnlaravel/public/ 目录,基本都会显示 Error in exception handler.  ,这是因为 learnlaravel/app/storage 目录没有777权限,设置好权限即可看见页面如下图:

Laravel 4 初级教程之安装及入门

恭喜你~Laravel安装成功!

不想配置镜像的同学,可以使用 Laravel 界非常著名的超超搞得安装神器:https://github.com/overtrue/latest-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

执行完成后,你的数据库里就有了5张表,这是sentry自己建立的。sentry在Laravel4下的配置详情见 https://cartalyst.com/manual/sentry#laravel-4,我大致说一下:

在 ./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/ 下就出现了两个model文件。这两个类继承了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行。

PHP 相关文章推荐
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
Feb 02 PHP
大家在抢红包,程序员在研究红包算法
Aug 31 PHP
php实现scws中文分词搜索的方法
Dec 25 PHP
Yii实现Command任务处理的方法详解
Jul 14 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
Apr 03 PHP
php生成毫秒时间戳的实例讲解
Sep 22 PHP
php实现mysql连接池效果实现代码
Jan 25 PHP
PHP PDOStatement::errorInfo讲解
Jan 31 PHP
PHP的new static和new self的区别与使用
Nov 27 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 27 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
Oct 30 #PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 #PHP
Thinkphp将二维数组变为标签适用的一维数组方法总结
Oct 30 #PHP
ThinkPHP模板中数组循环实例
Oct 30 #PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 #PHP
初识Laravel
Oct 30 #PHP
用 Composer构建自己的 PHP 框架之使用 ORM
Oct 30 #PHP
You might like
PHP个人网站架设连环讲(二)
2006/10/09 PHP
php访问查询mysql数据的三种方法
2006/10/09 PHP
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
领悟php接口中interface存在的意义
2013/06/27 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
php版淘宝网查询商品接口代码示例
2014/06/17 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
vuejs实现标签选项卡动态更改css样式的方法
2018/05/31 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
微信小程序仿通讯录功能
2020/04/09 Javascript
Python和Perl绘制中国北京跑步地图的方法
2016/03/03 Python
利用Hyperic调用Python实现进程守护
2018/01/02 Python
详解python while 函数及while和for的区别
2018/09/07 Python
Flask之请求钩子的实现
2018/12/23 Python
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
python 遍历pd.Series的index和value
2019/11/26 Python
python字符串,元组,列表,字典互转代码实例详解
2020/02/14 Python
利用python实现后端写网页(flask框架)
2021/02/28 Python
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
STRATHBERRY苏贝瑞包包官网:西班牙高级工匠手工打造
2020/11/10 全球购物
最新销售员个人自荐信
2013/09/21 职场文书
消防安全宣传口号
2014/06/10 职场文书
国际经济贸易专业自荐信
2014/06/13 职场文书
小学数学课题方案
2014/06/15 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
pytorch fine-tune 预训练的模型操作
2021/06/03 Python
Vue全局事件总线你了解吗
2022/02/24 Vue.js
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android