Laravelでアプリケーションを開発するときの大まかな流れ
今日はLaravelでアプリケーションを開発するときの大まかな流れを備忘録として説明したいと思います。
アプリケーションの立ち上げ
まずはLaravelでアプリケーションを立ち上げます。次のいずれかのコマンドを入力して、アプリケーションを作成します。ちなみにアプリケーションの名前をlaravel-appとしています。ここは皆さんの任意の名前をつけてください。
1 2 |
$ composer create-project 'laravel/laravel=8.5.19' --prefer-dist laravel-app $ laravel new laravel-app |
このどちらかのコマンドを実行するとlaravel-appというアプリのデフォルトが作成されます。
DBを用意する
今度はアプリケーションで用いるDBを用意します。これにはLaravelの特徴的な要素でもあるMigrationファイルを用いて用意します。
Databese自体の用意
その前に、LaravelではDBの中身をいろいろと操作できますが、唯一Laravelからだとできない操作が「Database自体の作成」です。まずはDBの作成を直接しましょう。ターミナルからMySQLに接続したら、以下のコマンドでDatabaseを作りましょう。ちなみに、Databaseの名前はlaravelにしました。
1 |
mysql> CREATE DATABASE laravel |
これを実行すると”Query OK, 1 row affected (0.00 sec)”と返ってきて、Databaseを作成することができます。
tableの用意
次にそのDatabaseにtableを用意します。ここからのDB周りの操作はすべてLaravel上で作業できますので、次のようにファイルを書いてください。
そもそもですがMVCモデルをとっているLaravelにおいて、DBとやりとりをするのはModelなのでまずはModelらへんを見ていくことにしましょう。まずターミナルで次のコマンドを実行してください。仮のtable名はmemoです。
1 |
$ php artisan make:model Memo -m |
上記のコマンドを実行することで「app > Models」にMemo.phpというModelファイルが生成されます。加えて上記のコマンドに”- m”というオプションを付けることで、migrationファイルを一緒に生成してくれます。このmigrationファイルは「database > migrations」にファイルを生成した日時と先ほど命名したModel名の複数形と、、、などが命名されたmigrationファイルが生成されます。今回、作成したファイルでいうと「2021_08_06_174912_create_memos_table.php」というファイルが生成されました。
migrationファイルの編集
それぞれのmigrationファイルを編集して、対応するそれそれのtableの仕様を書いていきます。
migrationファイルを編集し終わったら、ターミナルで以下のコマンドを実行します。
1 |
$ php artisan migration |
このコマンドによってMySQLに先程書いた仕様が反映されたtableが生成されます。MySQLで以下のコマンドを実行すると、実際にtableが作成されたのが確認できます。
1 |
mysql> show tables from laravel |
ログイン機能を実装する
今度はcomposerを用いて、手軽にログイン機能を実装しましょう。まずは以下のコマンドを入力してください。
1 2 3 |
$ composer require laravel/ui $ php artisan ui bootstrap --auth $ npm install && npm run dev |
これらのコマンドを実行すると、認証周りの機能とBootstrapのデザインを用いて実装することができます。実際にLaravelを”php artisan serve”で起動して、サイトを見てみると、サイトの右上に「Login(ログイン)」と「Regester(登録)」のボタンが増えているのが確認できます。
このRegesterボタンをクリックして、遷移したページで情報を入力すると、実際にユーザー登録もできますし、登録したユーザーの情報もDatabaseのUsersテーブルで確認することができます。
Laravelのテンプレートファイル
- @extends
- @yield
- @section
上記の3つを用いて、サイトのviewをテンプレート化する!
軽く触れておくと、テンプレートファイル化しておくていちいち同じ構造を書き直さなくてもいいから、汎用性が高くなるよ!これくらいの説明でも伝わるよね?!
@extends
- 子要素に用いる
- @extends(‘layouts.auth’)と書くと、そのファイルは親要素であるlayouts > auth.blade.phpに当て込まれる
@yield
- 親要素
- @yield(‘content’)と書くと、子要素の@section(‘content’) ~ @endsection部分を親要素に出力できる
@section
- 子要素
- @section(‘content’) ~ @endsectionと書くと、@extends(‘layouts.register’)で指定したファイル(今回だとlayouts > register.blade.php)の@yield(‘content’)部分に出力したコードを表示できる
Form周りの作り方
LaravelでForm周りの作り方を説明する。
Formを作るときの注意点
Webアプリケーションを作るときに、 Formを作ることは頻繁に登場する。このときにformの開始タグの直後に次のコードを挿入しておいてほしい。
1 2 3 4 5 |
<form action="/" method="POST"> @csrf <input type="text"> <button type="submit">送信する</button> </form> |
この「csrf」はCross-site Request Forgeryの略で、認証済みユーザーに代わって不正なコマンドを実行する、悪意のある攻撃の一種である。「@csrf」をinput開始タグの直後に挿入することで、LaravelはCSRFトークンを生成して、このCross-site Request Forgeryを防止することができる。詳しいことは別記事に記載するが、Laravelではこのコマンドを入力することでこのCross-site Request Forgeryを防止することができる。
dd関数について
dd関数とは、引数に変数(もちろん文字列でも数値でもいいが、目的には適していない)を入力すると、ブラウザでその引数の中身を参照できる。要はデバック用の関数で、開発の際はこのdd()に変数を入れるとよい。またdd()はそこで処理が止まるので、それ以降のコードは読まれない。
また似たような関数にdump関数があるが、これはdd()とは異なりdump()以降のコードも読まれる。
-
前の記事
tailwindcssをインストールできなかった話【解決済み】 2021.08.09
-
次の記事
Laravelと相性がいいCSSを紹介! 2021.08.11