<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ## 使用自定義代碼生成工具快速進行Laravel開發 這個Laravle包提供了一種代碼生成器,使得你可以加速你的開發進程,這些生成器包括: * generate:model – 模型生成器 * generate:view – 視圖生成器 * generate:controller – 控制器生成器 * generate:seed – 數據庫填充器 * generate:migration – 遷移 * generate:pivot – 關聯表 * generate:resource -資源 * generate:scaffold – 腳手架 項目地址 > https://github.com/laracasts/Laravel-5-Generators-Extended ## 安裝 #### Laravel 4.2 或者更低的版本 使用Composer安裝這個包,編輯你項目的composer.json文件,在`require`中添加`way/generators` ~~~ "require-dev": { "way/generators": "~2.0" } ~~~ 然后,在命令行下執行`composer update`: ~~~ composer update --dev ~~~ 一旦這個操作完成,就只需要最后一步,在配置文件中加入服務提供者。打開`app/config/app.php`文件,添加一個新的記錄到`providers`數組中. ~~~ 'Way\Generators\GeneratorsServiceProvider' ~~~ 這樣就可以了,你已經安裝完成并可以運行這個包了。運行artisan命令行則可以在終端上看到`generate`相關命令。 ~~~ php artisan ~~~ #### Laravel 5.0 或者更高版本 使用Composer安裝這個包,編輯你項目的`composer.json`文件,在`require`中添加`way/generators` ~~~ "require-dev": { "way/generators": "~3.0" } ~~~ 由于在Laravel高版本中默認文件夾結構,需要3.0或者更高的版本,才能適應5.0版本以上的Laravel 然后,在命令行下執行`composer update`: ~~~ composer update --dev ~~~ 一旦這個操作完成,就只需要最后一步,在配置文件中加入服務提供者。打開`app/config/app.php`文件,添加一個新的記錄到`providers`數組中. ~~~ 'Way\Generators\GeneratorsServiceProvider' ~~~ 這樣就可以了,你已經安裝完成并可以運行這個包了。運行artisan命令行則可以在終端上看到`generate`相關命令。 ~~~ php artisan ~~~ ## 使用示例 想象一下使用一個生成器加速你的工作流。而不是打開models文件夾,創建一個新的文件,保存它,并且在文件中添加一個class,你可以簡單的運行一個生成器命令即可完成這一系列動作。 * Migrations 遷移 * Models 模型 * Views 視圖 * Seeds 填充 * Pivot 關聯表 * Resources 資源 * Scaffolding 腳手架 * Configuration 配置 #### 遷移 Laravel提供了一個遷移生成器,但是它僅僅能夠創建數據庫結構。讓我們再回顧幾個例子,使用`generate:migration`。 ~~~ php artisan generate:migration create_posts_table ~~~ 如果我們不指定字段配置項,則下面這個文件將被創建在`app/database/migrations`目錄下。 ~~~ <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function(Blueprint $table) { $table->increments('id'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('posts'); } } ~~~ > 注意:生成器能夠檢測到你正在嘗試創建一個表。遷移的名稱,盡量應該是可描述的。生成器將掃描你的生成器名字的第一個單詞,并盡力確定如何繼續。例如,對于遷移create_posts_table,關鍵字"create",意味著我們應該準備必要的架構來創建表。 如果你使用`add_user_id_to_posts_table`代替遷移的名字,在上面的示例中,關鍵字"`add`",意味著我們將添加一行到現有的表中,然我們看看這個生成器命令。 ~~~ php artisan generate:migration add_user_id_to_posts_table ~~~ 這個命令將會準備一個下面這樣的樣板: ~~~ <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; class AddUserIdToPostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('posts', function(Blueprint $table) { }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('posts', function(Blueprint $table) { }); } } ~~~ > 注意:這一次我們沒有做Schema::create #### 關鍵字 當你在寫遷移的名字的時候,使用下面的關鍵字給生成器提供提示。 * create or make (create_users_table) * add or insert (add_user_id_to_posts_table) * remove (remove_user_id_from_posts_table) * delete or drop (delete_users_table) #### 生成數據庫模式 這是非常漂亮的,但是讓我們更進一步,生成數據庫模式的同時,使用`fields`選項。 ~~~ php artisan generate:migration create_posts_table --fields="title:string, body:text" ~~~ 在我們解釋這個選項之前,讓我們先看一下輸出: ~~~ <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; class CreatePostsTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('posts', function(Blueprint $table) { $table->increments('id'); $table->string('title'); $table->text('body'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('posts'); } } ~~~ 漂亮!少量的提示在這里: * 生成器將默認使用自增的`id`字段作為主鍵 * 它解析`fields`選項,并添加這些字段 * drop方法能夠足夠聰明的意識到,在相反的情況下,這個表應該被完全刪除 聲明字段,使用逗號+空格分隔鍵值列表[`key:value:option sets`],其中`key`表示字段的名稱,`value`表示字段的類型,`option`表示制定索引或者像是`unique`、`nullable`這樣的屬性。 這里是一些示例: * --fields="first:string, last:string" * --fields="age:integer, yob:date" * --fields="username:string:unique, age:integer:nullable" * --fields="name:string:default('John Doe'), bio:text:nullable" * --fields="username:string(30):unique, age:integer:nullable:default(18)" 請注意最后一個示例,這里我們指定了`string(30)`的字符串限制。這將產生`$table->string('username', 30)->unique()`; 使用生成器刪除表是可能的: ~~~ php artisan generate:migration delete_posts_table ~~~ 作為最后一個示例i,讓我們運行一個遷移,從`tasks`表中,刪除`completed`字段。 ~~~ php artisan generate:migration remove_completed_from_tasks_table --fields="completed:boolean" ~~~ 這一次,我們使用了"`remove`"關鍵字,生成器知道它要刪除一個字段,并且把它添加到`down()`方法中。 ~~~ <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; class RemoveCompletedFromTasksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('tasks', function(Blueprint $table) { $table->dropColumn('completed'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('tasks', function(Blueprint $table) { $table->boolean('completed'); }); } } ~~~ ## 模型 ~~~ php artisan generate:model Post ~~~ 這將生成一個文件,app/models/Post.php并且寫入下面的樣板 ~~~ <?php class Post extends \Eloquent { } ~~~ ## 視圖 視圖生成器相當簡單。 ~~~ php artisan generate:view admin.reports.index ~~~ 這個命令將創建一個空的視圖,`/app/views/admin/reports/index.blade.php`。如果提供的文件夾不存在,它會自動幫你創建 `Seeds` 生成數據[譯注:應該是用來填充測試數據] Laravel為我們提供了非常靈活的方式來填充表 Laravel provides us with a flexible way to seed new tables. ~~~ php artisan generate:seed users ~~~ 設置你想要生成的生成文件參數。這將生成 `app/database/seeds/UsersTableSeeder.php` 并用一下內容作為填充: ~~~ <?php // Composer: "fzaninotto/faker": "v1.3.0" use Faker\Factory as Faker; class UsersTableSeeder extends Seeder { public function run() { $faker = Faker::create(); foreach(range(1, 10) as $index) { User::create([ ]); } } } ~~~ 這將使用流行的`Faker`庫為你提供一個基本的樣板。這將是一個非常漂亮的方式來生成你的數據庫表。不要忘記使用`Composer`來安裝`Faker`! > 關聯表[譯注:pivot 這個詞愿意是中心點、中樞的意思,這里翻譯成關聯表比較合適,通俗一點就是兩個表的mapping關系表,帶有外鍵約束] 當你需要一個關聯表時,`generate:pivot`可以加速建立相應的表。 簡單的傳遞兩個需要關聯的表的名字。對于`orders`和`users`表,你可以: ~~~ php artisan generate:pivot orders users ~~~ 這個命令將創建下面的遷移: ~~~ <?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; class CreateOrderUserTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('order_user', function(Blueprint $table) { $table->increments('id'); $table->integer('order_id')->unsigned()->index(); $table->foreign('order_id')->references('id')->on('orders')->onDelete('cascade'); $table->integer('user_id')->unsigned()->index(); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('order_user'); } } ~~~ > 注意:它會正確設置你提供的兩個表名,排名不分先后。現在,運行php artisan migrate來創建你的關聯表! ## 資源 `generate:resource`命令將會為你坐一系列的事情: * 生成一個模型 * 生成index, show, create, edit視圖 * 生成一個控制器 * 生成一個數據庫結構遷移 * 生成一個數據庫填充 * 遷移這個數據庫 當你觸發這個命令,它將對每個動作進行問詢。通過這個方式,你可以告訴生成器,哪些是你確實需要的。 例子 想象如果你需要創建一個方法來顯示文章。你需要手動創建一個控制器,一個模型,一個數據庫遷移并且填充它,并且創建一個數據庫填充…為什么不用生成器來做呢? ~~~ php artisan generate:resource post --fields="title:string, body:text" ~~~ 如果你對每個詢問說yes,這個命令會給你如下樣板: * app/models/Post.php * app/controllers/PostsController.php * app/database/migrations/timestamp-create_posts_table.php (including the schema) * app/database/seeds/PostsTableSeeder.php ## Scaffolding 腳手架 腳手架生成器類似于`generate:resource`,除了創建一些初始化樣板外,同時也是為了方便。 例如,在運行`generate:scaffold post`時,你的控制器模板將會將會是: ~~~ <?php class PostsController extends \BaseController { /** * Display a listing of posts * * @return Response */ public function index() { $posts = Post::all(); return View::make('posts.index', compact('posts')); } /** * Show the form for creating a new post * * @return Response */ public function create() { return View::make('posts.create'); } /** * Store a newly created post in storage. * * @return Response */ public function store() { $validator = Validator::make($data = Input::all(), Post::$rules); if ($validator->fails()) { return Redirect::back()->withErrors($validator)->withInput(); } Post::create($data); return Redirect::route('posts.index'); } /** * Display the specified post. * * @param int $id * @return Response */ public function show($id) { $post = Post::findOrFail($id); return View::make('posts.show', compact('post')); } /** * Show the form for editing the specified post. * * @param int $id * @return Response */ public function edit($id) { $post = Post::find($id); return View::make('posts.edit', compact('post')); } /** * Update the specified resource in storage. * * @param int $id * @return Response */ public function update($id) { $post = Post::findOrFail($id); $validator = Validator::make($data = Input::all(), Post::$rules); if ($validator->fails()) { return Redirect::back()->withErrors($validator)->withInput(); } $post->update($data); return Redirect::route('posts.index'); } /** * Remove the specified resource from storage. * * @param int $id * @return Response */ public function destroy($id) { Post::destroy($id); return Redirect::route('posts.index'); } } ~~~ 請注意我們鼓勵您去修改這些自動生成的控制器。它只是一個簡單的開始。 `Configuration` 配置 你或許想修改你的模板–自動生成的文件是怎樣格式化的。考慮到這一點,你需要發布你的模板,生成器將會使用它們。 ~~~ php artisan generate:publish-templates ~~~ 你要復制所有app/templates目錄下的模板。你可以修改這些只要你滿意它的格式。如果你喜歡不同的目錄: ~~~ php artisan generate:publish-templates --path=app/foo/bar/templates ~~~ 當你運行`generate:publish-templates` ,它也會將配置發布到`app/config/packages/way/generators/config/config.php`文件。這個文件看起來有點像: ~~~ <?php return [ /* |-------------------------------------------------------------------------- | Where the templates for the generators are stored... |-------------------------------------------------------------------------- | */ 'model_template_path' => '/Users/jeffreyway/Desktop/generators-testing/app/templates/model.txt', 'scaffold_model_template_path' => '/Users/jeffreyway/Desktop/generators-testing/app/templates/scaffolding/model.txt', 'controller_template_path' => '/Users/jeffreyway/Desktop/generators-testing/app/templates/controller.txt', 'scaffold_controller_template_path' => '/Users/jeffreyway/Desktop/generators-testing/app/templates/scaffolding/controller.txt', 'migration_template_path' => '/Users/jeffreyway/Desktop/generators-testing/app/templates/migration.txt', 'seed_template_path' => '/Users/jeffreyway/Desktop/generators-testing/app/templates/seed.txt', 'view_template_path' => '/Users/jeffreyway/Desktop/generators-testing/app/templates/view.txt', /* |-------------------------------------------------------------------------- | Where the generated files will be saved... |-------------------------------------------------------------------------- | */ 'model_target_path' => app_path('models'), 'controller_target_path' => app_path('controllers'), 'migration_target_path' => app_path('database/migrations'), 'seed_target_path' => app_path('database/seeds'), 'view_target_path' => app_path('views') ]; ~~~ 同時,當你修改這個文件的時候,注意你也可以更新每個默認的生成器目標目錄。 ## Shortcuts 快捷命令 因為你可能會一次又一次的鍵入如下命令,命令別名顯然是有意義的。 ~~~ # Generator Stuff alias g:m="php artisan generate:model" alias g:c="php artisan generate:controller" alias g:v="php artisan generate:view" alias g:s="php artisan generate:seed" alias g:mig="php artisan generate:migration" alias g:r="php artisan generate:resource" ~~~ 這些將被保存,例如,你的`~/.bash_profile` 或者 `~/.bashrc` 文件中。 * * * * * 原文地址:[http://www.huyanping.cn/?p=364](http://www.huyanping.cn/?p=364)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看