Home  >  Article  >  Backend Development  >  菜鸟的蜕变:教你一步一步创建基于laravel5的简易论坛系统(1)

菜鸟的蜕变:教你一步一步创建基于laravel5的简易论坛系统(1)

WBOY
WBOYOriginal
2016-06-23 13:19:211061browse

本教程示例代码见:

本教程交流群: 96094083

大家在任何地方卡住,最快捷的解决方式就是去看我的示例代码或者在交流群里面提出来。

Laravel 5 中文文档:

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

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

本项目最终效果图

默认条件

本文默认你已经有配置完善的 PHP + MySQL 运行环境,懂得 PHP网站运行的基础知识。跟随本教程走完一遍,你将会得到一个基础的包含登录的简单 luntan 系统,并将学会如何使用一些强大的 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 5.0.22

然后,稍等片刻,当前目录下就会出现一个叫 learnlaravel5 的文件夹。

然后将learnlaravel5 的文件夹重命名为luntan。

本系列教程使用 Laravel 5.2 版本,5.1 版本去掉了本系列教程主要讲解的元素(Auth 系统),不建议使用 5.1 来学习。本系列教程为入门教程,目的是搞清楚 Laravel 的基本使用方法,切忌本末倒置。

 

打开文件夹apache-》conf=》extra=》http-vhosts.conf

然后在Apache虚拟地址配置文件http-vhosts.conf中最后面将网站根目录配置为 luntan/public。

 

在后面添加如下内容<br><virtualhost>    DocumentRoot "D:\ampp\htdocs\phpb\luntan\public"    ServerName www.bbs.com    ServerAlias bbs.com</virtualhost>



 

然后用记事本打开文件夹 C:\Windows\System32\drivers\etc中的hosts文件

在文件最后面添加如下内容

127.0.0.1      www.bbs.com127.0.0.1      bbs.com


如果你还是不会配置,建议去学会配置,网上资料很多。注意,要一直配置到 ***/luntan/public。

重启Apache服务器


使用浏览器访问你配置的地址,将看到以下画面(我在本地配置的地址为 http://www.bbs.com ):

 

那么恭喜你~ Laravel 5 安装成功!

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

3. 数据库建立及迁移

Laravel 5.2 把数据库配置的地方改到了 `learnlaravel5/.env`,打开这个文件,编辑下面四项,修改为正确的信息:

DB_HOST=localhostDB_DATABASE=luntanDB_USERNAME=rootDB_PASSWORD=password

推荐新建一个名为luntan 的数据库,为了学习方便,推荐使用 root 账户直接操作。

Laravel 已经为我们准备好了 Auth 部分的 migration,运行以下命令执行数据库迁移操作:

php artisan migrate

得到的结果如下:

如果你运行命令报错,请检查数据库连接设置。

4. 模型 Models

接下来我们将接触Laravel最为强大的部分,Eloquent ORM,真正提高生产力的地方,借用库克的一句话:鹅妹子英!

运行一下命令,建立贴文、分类、评论相应模型类:

php artisan make:model Article
php artisan make:model Category<br />php artisan make:model Comment

> Laravel 4 时代,我们使用 Generator 插件来新建 Model。现在,Laravel 5 已经把 Generator 集成进了 Artisan。

现在,Artisan 帮我们在 `learnlaravel5/app/` 下创建了两个文件 `Article.php`,Comment.php和 `category.php`,这是三个 Model 类,他们都继承了 Laravel Eloquent 提供的 Model 类 `Illuminate\Database\Eloquent\Model`,且都在 `\App` 命名空间下。这里需要强调一下,用命令行的方式创建文件,和自己手动创建文件没有任何区别,你也可以尝试自己创建这三个 Model 类。

Model 即为 MVC 中的 M,翻译为 模型,负责跟数据库交互。在 Eloquent 中,数据库中每一张表对应着一个 Model 类(当然也可以对应多个)。

如果你从其他框架转过来,可能对这里一笔带过的 Model 部分很不适应,没办法,是因为 Eloquent 实在太强大了啦,真的没什么好做的,继承一下 Eloquent 类就能实现很多很多功能了。

如果你想深入地了解 Eloquent,可以阅读系列文章:深入理解 Laravel Eloquent(一)——基本概念及用法

接下来进行 Article 、Category和Comment  类对应的 articles、categories 表和 comments表的数据库迁移,进入 `luntan/database/migrations` 文件夹。

在 ***_create_articles_table.php 中修改:

<?php<br /><br />use Illuminate\Database\Schema\Blueprint;<br />use Illuminate\Database\Migrations\Migration;<br /><br />class CreateArticlesTable extends Migration<br />{<br />    /**<br />     * Run the migrations.<br />     *<br />     * @return void<br />     */<br />    public function up()<br />    {<br />        Schema::create('articles', function(Blueprint $table)<br />        {<br />            $table->increments('id');<br />            $table->string('user_id');<br />            $table->string('title');<br />            $table->text('content');<br />            $table->integer('category')->default(0);<br />            $table->timestamps();<br />        });<br />    }<br /><br />    /**<br />     * Reverse the migrations.<br />     *<br />     * @return void<br />     */<br />    public function down()<br />    {<br />        Schema::drop('articles');<br />    }<br />}<br /><br />

在 ***_create_categories_table.php 中修改:

<?phpuse Illuminate\Database\Schema\Blueprint;use Illuminate\Database\Migrations\Migration;class CreateCategoriesTable extends Migration {    /**     * Run the migrations.     *     * @return void     */    public function up()    {        Schema::create('categories', function(Blueprint $table)        {            $table->increments('id');            $table->string('name');            $table->string('color');            $table->timestamps();        });    }    /**     * Reverse the migrations.     *     * @return void     */    public function down()    {        Schema::drop('categories');    }}



在 ***_create_comments_table.php 中修改:

<?php<br /><br />use Illuminate\Database\Schema\Blueprint;<br />use Illuminate\Database\Migrations\Migration;<br /><br />class CreateCommentsTable extends Migration {<br /><br />    /**<br />     * Run the migrations.<br />     *<br />     * @return void<br />     */<br />    public function up()<br />    {<br />        Schema::create('comments', function(Blueprint $table)<br />        {<br />            $table->increments('id');<br />            $table->integer('message_id');<br />            $table->integer('message_user_id');<br />            $table->integer('user_id');<br />            $table->integer('state')->default(0);<br />            $table->string('content');<br />            $table->timestamps();<br />        });<br />    }<br /><br />    /**<br />     * Reverse the migrations.<br />     *<br />     * @return void<br />     */<br />    public function down()<br />    {<br />        Schema::drop('comments');<br />    }<br /><br />}



 

然后执行命令:

php artisan migrate

成功以后, articles 表、catogries和comments 表已经出现在了数据库里,去看看吧~

5. 数据库填充 Seeder

在 `luntan/database/seeds/` 下新建 `ArticleTableSeeder.php` 文件,内容如下:

<?php<br /><br />use Illuminate\Database\Seeder;<br />use App\Article;<br /><br />class ArticleTableSeeder extends Seeder {<br /><br />  public function run()<br />  {<br />    DB::table('articles')->delete();<br /><br />      Message::create([<br />        'user_id'   => '1',<br />        'title'       => '安子尘',<br />        'content'   => '子,安于尘世。',<br />        'category'    =>    '1',<br />      ]);<br />  }<br /><br />}

在 `luntan/database/seeds/` 下新建 `CatogryTableSeeder.php` 文件,内容如下:

<?phpuse Illuminate\Database\Seeder;use App\Category;class CategoryTableSeeder extends Seeder {  public function run()  {    DB::table('categories')->delete();      Category::create([      	'id'	=>	'1',        'name'   => '杂谈',        'color'    => '202, 60, 60',      ]);  }}



然后修改同一级目录下的 `DatabaseSeeder.php`中:

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

这一句为

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

然后运行命令进行数据填充:

composer dump-autoloadphp artisan db:seed

去看看articles 表和categories表,是不是多了一行数据?

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn