「チュートリアルサイトを使って勉強をしたからWebアプリケーションが作れます!!」
初めてフレームワークというものに触れて、チュートリアルサイトを一通り終わった方でこのように自信を持って言える人はいないと思います。
おそらくチュートリアルを一通りこなすと、なんとなくこういうことができるんだなーって思う程度になると思います。私はそうでした。
いざ自分で何か作り始めようと思っても、一体何から始めたらいいかわかりません。
そのため今回は、チュートリアルを一通り終わった後、実際にWebアプリケーションを作り始めたので、改めてLaravelを使ったWebアプリケーションの作り方、その基本的な流れをお話していきます。
チュートリアルを一通り終わらせたという前提で書いてます。
プロジェクトを作る
まずはコマンドからプロジェクトを作ります。
composer create-project --prefer-dist laravel/laravel 5.6 プロジェクト名
チュートリアルで使ったのと同じLaravel5.6を使います。
プロジェクト名は好きなように名付けて大丈夫です。
コントローラを作る
プロジェクトを作ったら、そのプロジェクトフォルダの中へと移動し、コントローラを作ります。
cd プロジェクト名
php artisan make:controller コントローラ名
このコントローラ名は頭文字が大文字で複数形、後ろにコントローラと書くようにするのが一般的のようです。
<例>
PostsController
UsersController
また、このときresourceオプションをつけることで、よく使うメソッド(indexやcreate)が標準で作られ、それぞれに名前付きルートも記述されます。
php artisan make:controller コントローラ名 --resource
このresourceオプションによって作成されたindexやcreateなどへのルートは、ルーティングにこの1行を書くだけでそのまま使えます。
Route::resource('名前','コントローラ名');
この「名前」とはコントローラ名の名前です。
PostsControllerだったらposts、UsersControllerだったらusersです。
データベースの準備
Webアプリケーションを作る際に必須となってくるデータベースの準備をします。
データベース自体は予め作っておく必要があります。
.envファイルにデータベースの基本情報を書き込みます。
DB_DATABASE
DB_USERNAME
DB_PASSWORD
ローカル環境でしたらこの3項目のみで大丈夫です。
予め作っておいたデータベース名、ユーザ名、パスワードを書き込んでおきます。
.envファイルにデータベースの基本的な情報を書き込んだら、コマンドでマイグレーションファイルを作成します。
php artisan make:migration create_テーブル名_table
また、このときテーブル名は複数形で書きましょう。
<例>
php artisan make:migration create_posts_table
このコマンドを実行することでマイグレーションファイルが作成されます。
あとはこのマイグレーションファイルに作りたいカラムの情報を書き込みます。
例えば文字列でcomment、整数でnumberというカラムを作成したい場合は、
$table->string('comment');
$table->integer('number');
とマイグレーションファイルに記述します。
そしてマイグレーションを実行することで記述したカラムが含まれたテーブルが指定したテーブル名で作成されます。
マイグレーションはこのコマンドで実行できます。
php artisan migrate
後からカラムを増やしたい場合、チュートリアルでは別途追加用のマイグレーションファイルを作って記述するようなことが書かれてましたが、マイグレーションを取り消して、マイグレーションファイルを直接修正する方が圧倒的に楽でした。
マイグレーションの取り消しは、
php artisan migrate:rollback
でできます。
これを実行すると、テーブルの中身が全部消えます。
そしてマイグレーションファイルを修正して、改めてマイグレーションを実行すると、修正後の通りにテーブルが作成されます。
モデルを作る
次にモデルを作成します。
このモデルに記述した情報を元にデータベースを操作したり、変数を定義しておいて他で使ったりとできます。
モデルの作成もコマンドで行います。
php artisan make:model モデル名
このモデル名は頭文字が大文字の単数形で書きます。
また、テーブル名と対応させるのが一般的(必須?)です。
<例>
postsテーブルのモデル名=Post
usersテーブルのモデル名=User
この作成モデルで変数を定義しておくと、コントローラで呼び出すことができます。
モデル名::$変数名
コントローラで呼び出すことができると、それをビューへと渡すことができるので、実質どこでも使うことができるということです。
何度も使うような変数はモデルに書いておくと後々便利そうです。
余談ですが、configフォルダにtest.phpというファイルを作り、そこに変数を定義して、それをreturnすることで、コントローラから呼び出すこともできます。
$tests = config('test');
これもまたビューに渡すことができるので、覚えておくと何かの役に立つかも知れません。
最後に
LaravelでWebアプリケーションを作り始めるまでの流れについてお話してきました。
ここまで全部チュートリアルに書いてあることですが、説明に沿ってコードを書いていくのと、自分で1から作るのとは全くの別物です。
チュートリアルは言わば物語のあらすじのようなものです。
だいたいこういうことができるんだなーと知った上でそれぞれについて勉強をしましょうと捉えるといいんじゃないかと感じてます。
チュートリアルが終わったらそこがスタートラインなので、一緒に頑張っていきましょう!