顧客マスタテーブルを作成してみる
メニューもできたので顧客マスタ画面の開発を行うわけですが、まずは、メインのテーブル作成を始めたいと思います。
テーブル作成はDBに直接SQLを流すオーソドックスな方法でもいいのですが、Laravelではマイグレーションファイルを作成しそこにテーブル情報を記述し、ArtisanコマンドでDBに反映させる方法が普通なようです。
こうすることで、履歴を残したり、ロールバックができたりするので、チーム開発する際、役に立つようです。
さっそく、マイグレーションファイルを作成するわけですが、ベースファイルもArtisanコマンドで生成できます。
今回はModelファイルも併せて作成することを考えており、プロジェクトフォルダ内で以下のように、シェルにタイプし実行しました。
php artisan make:model Customer -m
これは、"Customer"というモデルファイルを作って"customers"というテーブルのマイグレーションファイルを同時に生成させるものです。
この名称ルールはORMによるもので、テーブル名は別名にすることも可能です。ただ、こういった命名規約系はある程度統一させといたほうがチーム開発ではベターだとは思います。
尚、さらっと出した、モデルについてですが、LaravelはMVCという設計思想に基づくフレームワークで、この思想の"M"の部分になり"データの管理や手続き"を担うものです。
まあ、テーブルを操作するモデルクラスを作ってそのクラスからテーブルにアクセスさせるイメージでしょうかね。
尚、モデルを使わなくても一応開発できるようです。
つぎに生成されたマイグレーションファイルにテーブル情報を記述します。
マイグレーションファイルは"databese"フォルダに入っており、今回は以下のように"create"ファンクションに作成するテーブルの情報を記述しました。
$table->bigIncrements('id'); $table->Text('customer_id'); $table->Text('customer_nm'); $table->longText('customer_addr')->nullable(); $table->Text('customer_tel')->nullable(); $table->Text('customer_fax')->nullable(); $table->longText('note')->nullable(); $table->integer('status')->defalut('1'); $table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP')); $table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP'));
この記述方法について詳しくしりたい方はLaravelの公式ページみていただきたいのですが、データベースの知識ある方なら、なんとなく何がしたいかはわかるのではなないでしょうかね。
記述できたら、以下、Artisan コマンドを実行すると、テーブルが作成されます。
#php artisan migrate
どうでもいい話ですが、Laravelの公式ページみたらORMであるEloquentを使うとデータベースとの対話を楽しくすることができると書いてました。なんかこれを聞いて、ORMの理解が深まった気がします。
ただし、テーブルの設計書やER図はいずれにしてもあったほうがいいですね。
今日はここまで。ようやく次回から、画面の開発にはいれるかな。