本文以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) { // } }
默認建立的控制器裏包含資源路由所需的全部方法。若是咱們不須要裏面的內容,能夠加--plain
:web
$ 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表結構
生成模型文件: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
表,用來記錄數據庫遷移信息。
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