本文以laravel5.0.22为例。

简介

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

如何使用

创建控制器

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

  1. $ php artisan make:controller UserController
  2. Controller created successfully.

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

  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Http\Requests;
  5. use App\Http\Controllers\Controller;
  6. class UserController extends Controller
  7. {
  8. /**
  9. * Display a listing of the resource.
  10. *
  11. * @return \Illuminate\Http\Response
  12. */
  13. public function index()
  14. {
  15. //
  16. }
  17. /**
  18. * Show the form for creating a new resource.
  19. *
  20. * @return \Illuminate\Http\Response
  21. */
  22. public function create()
  23. {
  24. //
  25. }
  26. /**
  27. * Store a newly created resource in storage.
  28. *
  29. * @param \Illuminate\Http\Request $request
  30. * @return \Illuminate\Http\Response
  31. */
  32. public function store(Request $request)
  33. {
  34. //
  35. }
  36. /**
  37. * Display the specified resource.
  38. *
  39. * @param int $id
  40. * @return \Illuminate\Http\Response
  41. */
  42. public function show($id)
  43. {
  44. //
  45. }
  46. /**
  47. * Show the form for editing the specified resource.
  48. *
  49. * @param int $id
  50. * @return \Illuminate\Http\Response
  51. */
  52. public function edit($id)
  53. {
  54. //
  55. }
  56. /**
  57. * Update the specified resource in storage.
  58. *
  59. * @param \Illuminate\Http\Request $request
  60. * @param int $id
  61. * @return \Illuminate\Http\Response
  62. */
  63. public function update(Request $request, $id)
  64. {
  65. //
  66. }
  67. /**
  68. * Remove the specified resource from storage.
  69. *
  70. * @param int $id
  71. * @return \Illuminate\Http\Response
  72. */
  73. public function destroy($id)
  74. {
  75. //
  76. }
  77. }

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

  1. $ php artisan make:controller --plain UserController

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

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

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

  1. namespace App\Admin\Http\Controllers;

生成模型

创建一个新的 Eloquent 模型类:

  1. php artisan make:model User

生成User.php:

  1. <?php
  2. namespace App;
  3. use Illuminate\Database\Eloquent\Model;
  4. class User extends Model
  5. {
  6. }

更多用法

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

使用migration新建表结构

生成模型文件:

  1. php artisan make:model Article

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

  1. $ php artisan make:migration create_article_table
  2. Created Migration: 2016_09_10_020228_create_article_table

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

  1. <?php
  2. use Illuminate\Database\Schema\Blueprint;
  3. use Illuminate\Database\Migrations\Migration;
  4. class CreateArticleTable extends Migration
  5. {
  6. /**
  7. * Run the migrations.
  8. *
  9. * @return void
  10. */
  11. public function up()
  12. {
  13. Schema::create('articles', function(Blueprint $table){
  14. $table->increments('id');
  15. $table->string('title');
  16. $table->text('body')->nullable();
  17. $table->integer('user_id');
  18. $table->timestamps();
  19. });
  20. }
  21. /**
  22. * Reverse the migrations.
  23. *
  24. * @return void
  25. */
  26. public function down()
  27. {
  28. //
  29. }
  30. }

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

  1. $ php artisan migrate
  2. Migrated: 2016_09_10_020228_create_article_table

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

  1. CREATE TABLE `articles` (
  2. `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  3. `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  4. `body` text COLLATE utf8_unicode_ci,
  5. `user_id` int(11) NOT NULL,
  6. `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  7. `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  8. PRIMARY KEY (`id`)
  9. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

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

Seeder

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

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

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

  1. $ php artisan make:seeder ArticleSeeder
  2. Seeder created successfully.

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

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

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

  1. public function run()
  2. {
  3. $this->call(ArticleSeeder::class);
  4. }

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

  1. $ composer dump-autoload

然后执行 seed:

  1. $ php artisan db:seed
  2. 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

Laravel5.0学习--03 Artisan命令的更多相关文章

  1. Laravel5.0学习--01 入门

    本文以laravel5.0.22为例. 生产环境建议使用laravel5.1版本,因为该版本是长期支持版本.5.1文档更详细:http://laravel-china.org/docs/5.1. 环境 ...

  2. Laravel5.0学习--02 实例进阶

    本文以laravel5.0.22为例. 本节以新建一个简单的博客作为实例. 准备工作 数据库配置 .env文件(也可以直接修改config/database.php) DB_HOST=localhos ...

  3. Django 2.0 学习(03):Django视图和URL(下)

    接上篇博文,继续分析Django基本流程. 编写第一个(view)视图函数 1.打开文件polls/views.py,输入下面的Python代码: from django.http import Ht ...

  4. laravel 5.0 artisan 命令列表(中文简体)

    #php artisan list Laravel Framework version Usage: [options] command [arguments] Options(选项): --help ...

  5. Laravel 的Artisan 命令学习

    Laravel 的Artisan 命令学习 Artisan 是 Laravel 提供的 CLI(命令行接口),它提供了非常多实用的命令来帮助我们开发 Laravel 应用.前面我们已使用过 Artis ...

  6. Redis学习03——存储字符串(String)

    --------------------- 作者:愤怒的小明 来源:CSDN 原文:https://blog.csdn.net/qiwenmingshiwo/article/details/78118 ...

  7. Java虚拟机JVM学习03 连接过程:验证、准备、解析

    Java虚拟机JVM学习03 连接过程:验证.准备.解析 类被加载后,就进入连接阶段. 连接就是将已经读入到内存的类的二进制数据合并到虚拟机的运行时环境中去. 连接阶段三个步骤:验证.准备和解析. 类 ...

  8. DirectX 总结和DirectX 9.0 学习笔记

    转自:http://www.cnblogs.com/graphics/archive/2009/11/25/1583682.html DirectX 总结 DDS DirectXDraw Surfac ...

  9. memcached学习笔记——存储命令源码分析上篇

    原创文章,转载请标明,谢谢. 上一篇分析过memcached的连接模型,了解memcached是如何高效处理客户端连接,这一篇分析memcached源码中的process_update_command ...

随机推荐

  1. D3数据绑定

    这里转载一个非常经典的关于D3数据绑定的帖子,由D3作者自己写的,非常棒,以至于我忍不住全文copy到此. 原文地址 Thinking with Joins Say you’re making a b ...

  2. 【转】Wireshark基本用法

    原地址:http://blog.jobbole.com/70907/ 按照国际惯例,从最基本的说起. 抓取报文: 下载和安装好Wireshark之后,启动Wireshark并且在接口列表中选择接口名, ...

  3. iOS Swift 3 open

    参考资料:http://stackoverflow.com/questions/38947101/what-is-the-open-keyword-in-swift

  4. csv

    csv 文件的读写:http://www.cnblogs.com/fiozhao/p/3225112.html 求取一个立方体的对角线穿个的边长为1的正方体的个数:http://www.cnblogs ...

  5. VS2015 RTM与ASP.NET 5 RC1之坑

    最近Asp.Net 5的RC1出来了 VS2015的Update1也开始进入RC阶段 嗯,微软尿性,是时候转移到VS2015了 开始踩坑之旅 装好VS2015后,当然是开始折腾ASP.Net 5嘛 建 ...

  6. 将库打包到nuget服务器

     前言 由于目前.net core无法引用本地的 assembly ,所以尝试将项目的依赖库打包到nuget服务器.  相关的工具 Nuget Package Explorer 参考文档 dotnet ...

  7. HDU 2492 Ping pong (树状数组)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2492 Ping pong Problem Description N(3<=N<=2000 ...

  8. 关于AlertDialog.Builder(Context context)中所应传入的context

    错误报告: 10-20 14:34:46.565: E/AndroidRuntime(23098): FATAL EXCEPTION: main10-20 14:34:46.565: E/Androi ...

  9. 查看sbt版本

    进入 sbt 命令行模式, 键入sbtVersion 得到[info]0.13.12

  10. fasicon.js (无二维码版,如需要js创建二维码版本可联系我:770959294@qq.com)

    /*** Created by 张云山 on 2016/12/9.*/(function(wins,doct){wins.fasicon = function(){this.name = " ...