LaravelでICOのWebアプリを作る -第2回目 登録(テーブル/モデル作成)編-

with コメントはまだありません
前回(第1回目 -設計図編-)に引き続き、
今回はICOのwebアプリに含まれる
以下のような新規作成画面をLaravelで作成します。
環境構築が楽なのでcloud9を使用します。

◇Laravelのプロジェクト生成

では、まず始めにLaravelプロジェクト(ico)を作るところから。
のコマンドを実行して、ico プロジェクトを生成します。

生成されたら、以下のようなファイル構成が確認できます。

 

◇Laravelでデータベース接続

次に、新規作成画面で入力したデータの保存先であるデータベースとLaravelを接続します。
◆.env上で環境変数を変更
デフォルトで環境変数の中身は以下のようになっております。
icoキャンペーンのwebアプリ用のデータベースなのに
homesteadがデータベース名だと覚えにくいですね。

 

すぐにデータベース名が思い出せるように
データベース名をicoに変更し、
ユーザ名は rootで、
パスワードは無しにして

 

Laravelがmysqlに接続するために、
Laravelにパスワードを教えてあげる処理を以下のように行います。
上記のように環境変数の値を変更することで
データベース名がico、ユーザ名がrootに設定することができました。

 

◇データベースの作成

データベース接続設定が終わったので早速、
MySQLを使ってデータベースを作成します。
まず
のコマンドでサーバを起動し、
でMysqlサーバに接続します。

次に以下のように
のコマンドを実行し、データベース作成が完了です。

 

◇テーブル設計

キャンペーン登録画面のフォームから受け取ったデータを格納するために
テーブル設計を行います。
icosテーブルに含まれるカラムは以下です。
 
・title(仮想通貨名)
・description(内容)
・image(画像)
・url(URL)
 
Laravelではマイグレーションファイルを使ってテーブルを作成します。
以下のように
のコマンドを実行します。
php artisan make:migration でマイグレーションファイルを生成し、
create_〇〇_tableでマイグレーションファイル名を、
–create=〇〇ではテーブル名を指定しています。

 

これで、database/migrationsフォルダ内に
以下のような2017_09_26_170753_create_icos_tableというファイルが生成され、
テーブル作成ができる環境が整いました。
デフォルトではidカラムとtimestampしか指定されていないので、
このファイル内で以下のように
icosテーブルのカラムを指定します。

titledescriptionの箇所の第二引数に存在する45は文字数の指定になります。
カラムが設定できたので、以下のように
のコマンドでマイグレーションを実行します。

実行ができたら、
mysql -u rootのコマンドで以下のようにMySQLにログインして
icosテーブルが生成されているか確認します。
上でテーブルが確認できる通り、マイグレーション実行でテーブル作成が成功したことがわかります。

 

 ◇モデル作成

データベースを操作する為に
のコマンドで

モデルを作成します。
icosテーブルと結びつけるモデルを作成したいので、モデル名はIcoになります。
テーブルとモデルに関係を持たせる為には
モデル名にはテーブル名の複数形を付けるという規約があるからです。
上のようにモデルの作成が成功したら、
appディレクトリ直下に下記のモデルファイルが生成されます。
これでicosテーブルを操作できるIcoモデルが完成しました。

 

 ◇ルートの設定

モデルが作成できたので、今度は
あるURLにアクセスされた時に、どの処理を行うか設定するルーティングを記述します。
記述場所は以下のapp/Http/route.phpです。
デフォルトで記述されている
を消して、下記に変更します。
は ‘/’ とあるように、トップページにアクセスした際に
MessagesControllerのindexアクションが作動するという設定です。
(このindexアクション内の処理は後で記述します)
は実は下記の省略形です。
この一行に以下のようなコントローラのアクションの処理が含まれております。
これでルーティングが設定できたので、
次回はアクセスした後に作動するコントローラの処理内容を記述していきます。