laravel 開発日記 第8回 ~ 基本CRUDアプリを作ってみる(前編) ~

今回から、基本CRUDアプリを作ろうと思います。

■CRUD
https://ja.wikipedia.org/wiki/CRUD

とりあえず、「取引先種別」を管理するアプリを作ります。

まずは、設計から。 テーブルのカラムは以下のようにします。

■取引先種別(corporation_divisions)
・id
・name
・created_at
・updated_at

(1)モデルの作成
主にDB回りの制御を担当。 具体的には、
・マスアサインメント項目の定義
・スコープ(クエリ条件のカスタム)
・リレーションの定義 などを記述

php artisan make:model CorporationDivision

命名ルールは、アッパーキャメルケースの単数形。 –no-migrationオプションをつけなければ、自動でマイグレーションファイルが生成されます。

【作業ファイル:/app/CorporationDivision.php】

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class CorporationDivision extends Model {

    //マスアサインメント許可
    protected $fillable = ['name'];
}

とりあえず、マスアサインメントのみ追加。

(2)マイグレーションファイル修正

【作業ファイル:/database/migrations/2015_XX_XX_XXXXXX_create_corporation_divisions_table.php】

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateCorporationDivisionsTable extends Migration {

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('corporation_divisions', function(Blueprint $table)
        {
            $table->increments('id');
            $table->text('name');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('corporation_divisions');
    }

}

で、マイグレーション

php artisan migrate

(3)ルーティング
Resourcefulルーティングを使うので、下記の一行追加。

【作業ファイル:/app/Http/routes.php】

Route::resource('corporationDivisions', 'CorporationDivisionsController');

命名ルールは、
ルート名:ローワーキャメルケース/複数形(xxxXxxxs)。
コントローラー名:アッパーキャメルケース/複数形 + Controller(XxxXxxxsController)にするのを注意。

■Laravelのルーティング書き方まとめ
http://qiita.com/michiomochi@github/items/de19c560bc1dc19d698c

(4)リクエストの作成
登録・編集時の項目管理を担当

php artisan make:request CorporationDivisionRequest

命名ルールは、アッパーキャメルケース/単数形 + Request

【作業ファイル:/app/Http/Requests/CorporationDivision.php】

<?php namespace App\Http\Requests;

use App\Http\Requests\Request;

class CorporationDivision extends Request {

    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'name' => 'required',
        ];
    }

}

nameは入力必須項目にしました。

長くなってきたので、今回はここまで。 次回は、コントローラーの作成とビューの作成を行います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です