Laravel5.0學習--03 Artisan命令

本文以laravel5.0.22爲例。php

簡介

Artisan 是 Laravel 內置的命令行接口。它提供了一些有用的命令協助您開發,它是由強大的 Symfony Console 組件所驅動。利用它,咱們能夠快速的新建Controller、Model等類。laravel

如何使用

建立控制器

1)建立一個新的資源控制器git

$ php artisan make:controller UserController

Controller created successfully.

會在app\Http\Controllers生成UserController.php:github

<?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)
    {
        //
    }
}

默認建立的控制器裏包含資源路由所需的全部方法。若是咱們不須要裏面的內容,能夠加--plainweb

$ php artisan make:controller --plain UserController

固然,咱們也能夠指定生成控制器的路徑:shell

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

那麼生成的控制器的命名空間也會跟着變化:數據庫

namespace App\Admin\Http\Controllers;

生成模型

建立一個新的 Eloquent 模型類:app

php artisan make:model User

生成User.php:composer

<?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新建表結構

生成模型文件:ide

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 行假數據。

參考: 一、Laravel 5.1 LTS 速查表 https://cs.phphub.org/#artisan 二、Laravel 5.0 中文文檔:Artisan 命令行接口 http://laravel-china.org/docs/5.0/artisan 三、2016 版 Laravel 系列入門教程(一) https://github.com/johnlui/Learn-Laravel-5/issues/4

相關文章
相關標籤/搜索