Laravel5.0学习--03 Artisan命令

本文以laravel5.0.22为例。

简介

Artisan 是 Laravel 内置的命令行接口。它提供了一些有用的命令协助您开发,它是由强大的 Symfony Console 组件所驱动。利用它,我们可以快速的新建Controller、Model等类。

如何使用

创建控制器

1)创建一个新的资源控制器

$ php artisan make:controller UserController

Controller created successfully.

会在app\Http\Controllers生成UserController.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller; class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
} /**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
} /**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
} /**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
} /**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
} /**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
} /**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
//
}
}

默认创建的控制器里包含资源路由所需的所有方法。如果我们不需要里面的内容,可以加--plain

$ php artisan make:controller --plain UserController

当然,我们也可以指定生成控制器的路径:

php artisan make:controller App\\Admin\\Http\\Controllers\\DashboardController

那么生成的控制器的命名空间也会跟着变化:

namespace App\Admin\Http\Controllers;

生成模型

创建一个新的 Eloquent 模型类:

php artisan make:model User

生成User.php:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{ }

更多用法

php artisan list #查看所有可以使用的 Artisan 命令
php artisan help migrate #浏览命令的帮助
php artisan --version #显示目前的 Laravel 版本 php artisan down #进入维护模式
php artisan up #退出维护模式 php artisan make:provider name #创建一个新的服务提供者类
php artisan make:request name #创建一个新的表单请求类 php artisan migrate #进行数据库迁移(migration)
php artisan make:migration create_article_table #创建article表结构

使用migration新建表结构

生成模型文件:

php artisan make:model Article

首先创建表结构的类文件:

$ php artisan make:migration create_article_table

Created Migration: 2016_09_10_020228_create_article_table

在database\migrations目录生成了2016_09_10_020228_create_article_table.php。该文件有个up方法,我们修改:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration; class CreateArticleTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('articles', function(Blueprint $table){
$table->increments('id');
$table->string('title');
$table->text('body')->nullable();
$table->integer('user_id');
$table->timestamps();
});
} /**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}

这几行代码描述的是 Article 对应的数据库中那张表的结构。Laravel 默认 Model 对应的表名是这个英文单词的复数形式,在这里,就是 articles。接下来让我们把 PHP 代码变成真实的 MySQL 中的数据表,运行命令:

$ php artisan migrate

Migrated: 2016_09_10_020228_create_article_table

执行成功后,articles 表已经出现在数据库里了:

CREATE TABLE `articles` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`body` text COLLATE utf8_unicode_ci,
`user_id` int(11) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

articles里可以改为你想要的名字。完成后数据库里还会多了个migrations表,用来记录数据库迁移信息。

Seeder

database/seeds下则对应相应的数据库改动信息,包含数据。

Seeder 解决的是我们在开发 web 应用的时候,需要手动向数据库中填入假数据的繁琐低效问题。

运行以下命令创建 Seeder 文件:

$ php artisan make:seeder ArticleSeeder

Seeder created successfully.

我们会发现 database/seeds 里多了一个文件 ArticleSeeder.php,修改此文件中的 run 函数为:

public function run()
{
DB::table('articles')->delete(); for ($i=0; $i < 10; $i++) {
\App\Article::create([
'title' => 'Title '.$i,
'body' => 'Body '.$i,
'user_id' => 1,
]);
}
}

上面代码中的 \App\Article 为命名空间绝对引用。接下来我们把 ArticleSeeder 注册到系统内。修改 database/seeds/DatabaseSeeder.php 中的 run 函数为:

public function run()
{
$this->call(ArticleSeeder::class);
}

由于 database 目录没有像 app 目录那样被 composer 注册为 psr-4 自动加载,采用的是 psr-0 classmap 方式,所以我们还需要运行以下命令把 ArticleSeeder.php 加入自动加载系统,避免找不到类的错误:

$ composer dump-autoload

然后执行 seed:

$ php artisan db:seed

Seeded: ArticleSeeder

这时候刷新一下数据库中的 articles 表,会发现已经被插入了 10 行假数据。

参考:

1、Laravel 5.1 LTS 速查表

https://cs.phphub.org/#artisan

2、Laravel 5.0 中文文档:Artisan 命令行接口

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

3、2016 版 Laravel 系列入门教程(一)

https://github.com/johnlui/Learn-Laravel-5/issues/4

上一篇:openstack之nova启动实例过程


下一篇:Effective java笔记(二),所有对象的通用方法