Laravel4、最速でユーザーのCRUD構築

Tags : Laravel4  

インストールから、ユーザーのCRUD処理までを最速で開発してみましょう。皆さん、「最速」という言葉に弱いのは重々承知していますので、一種の釣り記事です。:D

まあ、せっかくジェネレーターを紹介したので、その活用も兼ね、手順をさらっと復讐してみましょう。

Laravelのインストール

ZIPを落とし、予め次の手順のジェネレーターパッケージをcomposer.jsonに入れておいたほうが、早いかも知れません。タイプとマシンと回線スピードによります。

どなたでも平均して素早く作業が済ませられる、コマンドライン活用でいきましょう。

composer create-project laravel/laravel user-crud --prefer-dist

コメント日本語翻訳版をインストールしたい場合は、以下のコマンドをご利用ください。

composer create-project laravel-ja/laravel user-crud --prefer-dist

user-crudという名前のディレクトリーが生成され、その中にLaravel一式がインストールされます。このインストールの時間が、一番長い待ち時間となるでしょう。

この間に以降を実行すると、多少時間を稼げます。

今後の作業のため、別のターミナルを開くか、新しいタブを作成し、インストールディレクトリーへ移動しておきましょう。

cd user-crud

仮想ホストの設定

PHP5.4以降では、PHPのWebサーバーが利用できますので、この手順は省略できます。もちろん、PHPのサーバーを使用せず、仮想サーバーの設置を行なっても構いません。ご自由にどうぞ。

各自の環境に合わせ、仮想サーバーを設定してください。publicフォルダーが、Webの公開フォルダーになります。

app/storageのパーミッション設定

PHPの動作環境により、これは必要ないかも知れません。

パーミッションを設定します。

chmod -R o+w app/storage

データベースの準備

データベースを作成しましょう。PHPMyAdminのようなGUIツールを使用しても良いですし、コマンドライン一発で作成するのも良いでしょう。

MySQLを使用する場合の例です。

mysql --user=root --password=root -e 'CREATE DATABASE `user-crud` CHARACTER SET utf8 COLLATE utf8_general_ci'

ユーザーとパスワードは共にrootという、開発環境ではよくあるパターンです。データーベース名はuser-crudにしています。もちろん、ご自由に調整してください。

ついでに、Laravelの設定ファイルもこれに合わせ変更しましょう。app/config/database.phpです。

インストール直後、デフォルトのDBシステムには、MySQLが設定されています。そのため、MySQLの接続設定だけ変更すれば済みます。

        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'user-crud', // DB名
            'username'  => 'root', // MySQLユーザー名
            'password'  => 'root', // MySQLパスワード
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

ジェネレーターのインストール

composer.jsonを直接変更せず、ここはコマンド一発でインストールしましょう。

composer require "way/generators:dev-master"

これも多少、時間がかかりますので、次の段階を行いましょう。

サービスプロバイダーの登録

app/config/app.phpをひらき、サービスプロバイダーを登録します。

次の一行をロードするサービスプロバイダーに付け加えてください。

'Way\Generators\GeneratorsServiceProvider',

ユーザーテーブルのスキャフォールディング

ジェネレータのインストールとプロバイダーの登録が終了したら、スキャフォールディングを実行しましょう。

これもコマンド一発です。

php artisan generate:scaffold user --fields="username:string[30],password:string[64],email:string[320]"

続いて、マイグレーションを実行し、usersテーブルを生成します。

php artisan migrate

アクセス!

WebブラウザでURI、/usersへアクセスしましょう。

ユーザーテーブル一覧が表示されます。最初は、データがありません。'Add new user'リンクをクリックし、ユーザーを付け加えましょう。

そして付け加えると…エラーになります。

これは、Userモデルだけは、Laravelのインストール時点で用意されているため、ジェネレーターが生成を中止し、$rulesプロパティーが設定されていないからです。

app/models/User.phpを開き、プロパティーを追加しましょう。

    static public $rules = array (
        'username' => array (
            'required',
            'max:30',
        ),
        'password' => array (
            'required',
            'max:30',
        ),
        'email' => array (
            'required',
            'email',
            'max:320',
        ),
    );

    protected $fillable=array('username', 'password', 'email');

ついでに、複数代入可能フィールドの設定も行なっています。(もちろんこれも、既にモデルファイルが存在していなければ、自動的に生成されます。)

当然ながら、Userモデル以外では、このような手間は必要ありません。(いずれにせよ、実用にするためには、手を入れる必要はあるでしょう。)

再度、実行してみましょう。今度はちゃんと動きます。

実用にするなら、ユーザー認証ができるようにし、最低でもURI/usersには、Authフィルータを賭けておきましょう。

Route::when('users*', 'auth');

ドキュメント記載の通りにRoute::when('users/*', 'auth');と指定すると、URI/usersにAuthフィルターが適用されません。/usersにもAuthフィルターを適用する時は、スラッシュを省きましょう。ただし、例えば、/users-checkのような、usersで始まるURI全部に一致するようになる副作用があります。この副作用を避けるには、分けて指定しましょう。

Route::when('users', 'auth');
Route::when('users/*', 'auth');

順調に行けば、インストールからCRUD操作ができるまで、全部で5分くらいですね。