Laravel基本覚書
インストール
Composerのインストール
Laravelのインストール
1 | composer global require laravel/installer |
プロジェクトの作成
1 2 3 | cd 【プロジェクトパス(xamppなら、C:\xampp\htdocs など)】 laravel new 【プロジェクト名(ディレクトリ名)】 |
ルート情報設定ファイル
/routes/web.php
1 | Route::get('【URL】', '【コントローラ名】@【メソッド名】'); |
viewテンプレートディレクトリ
/resources/views
モデル
モデルの生成
1 | php artisan make:model 【モデル名】 |
モデルディレクトリ/app
コントローラ
コントローラの生成
1 | php artisan make:controller 【コントローラ名】 |
コントローラディレクトリ/app/Http/Controllers
データベース関連
- Eloquentではテーブル名は複数形、モデルは単数形といった命名規則にすると、
テーブルとモデルを自動的に紐づけて動くようになっている。
データベース初期設定
mysqlはデータベース名やホストやユーザー名、パスワードを修正。
sqlite格納ディレクトリ
/database
データベース設定ファイル
/config/database.php
環境変数設定ファイル『.env』
接続タイプとデータベースのフルパスを記入。
sqliteの場合はこちら
/.env
DB_CONNECTION=sqlite
DB_DATABASE=【フルパス】
マイグレーション
使用するデータベースのテーブル類の作成処理。
マイグレーションの機能を使い、コマンド一発でテーブル類を生成。
途中でテーブルの構造などを変更した場合も、古いテーブルを削除して新しいテーブルに更新できる。
マイグレーションファイル生成
1 | php artisan make:migration create_【テーブル名】_table |
マイグレーションディレクトリ/database/migrations
マイグレーションを実行
マイグレーションしていないマイグレーションファイルを実行してくれます。
1 | php artisan migrate |
mysqlでマイグレーションがエラーになるときの対処法
下記のエラーが発生Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table 'users' add unique 'users_email_unique'('email'))
データベースのcharasetがutf8mb4だと、MySQL5.7.7未満ではユニーク制約を付けたカラムは最大767bytesまでのようで、
その最大値を超えてしまっているようです。
app\Providers\AppServiceProvider.php
に下記を追加。
これでカラムの最大長を変更して、実行ができる。
1 2 3 4 5 6 | use Illuminate\Support\Facades\Schema; public function boot() { Schema::defaultStringLength(191); } |
参考サイト
https://qiita.com/beer_geek/items/6e4264db142745ea666f
その他の対策も載っています。
シーディング
マイグレーションで生成したテーブルに初期データを登録しておくことができる。
シーダーファイルの生成
1 | php artisan make:seeder 【シーダー名】 |
シーダーディレクトリ/database/seeds
シーディングの実行
/database/seeds/DatabaseSeeder.php
に実行したいシーダークラスを追加し、その後実行。
1 | php artisan db:seed |
session
sessionの保存先をデータベースに変更する
デフォルトではstorage/framework/sessions/
にファイルで保存されていくが、それをデータベースに変更する。
sessionに関する設定ファイルconfig/session.php
1 | 'driver' => env('SESSION_DRIVER', 'database'), |
/.env
SESSION_DRIVER=database
session用のデータベースを用意する
session用のテーブルは仕様が決まっていて、それに沿った形でないといけません。
artisanコマンドでマイグレーションファイルを生成します。
1 | php artisan session:table |
サービスプロバイダ
アプリケーション全体で設定を変更するなどの処理を行うのが『サービスプロバイダ』。/app/Providers/AppServiceProvider.php
bootメソッドが起動時に実行されるので、コントローラ類が呼ばれる前に処理できる。
サービスコンテナ
コントローラのアクションメソッドで引数にクラスと変数を用意するとメソッドにインスタンスが渡される。public function index(Request $request, Response $response)
インスタンス生成に引数(今回はid)を必要とするクラスの場合は下記で生成する。$myservice = app()->makeWith('App\MyClasses\MyService', ['id' => $id]);
ミドルウェア
リクエストを操作する仕組み。
1 | php artisan make:middleware 【ミドルウェア名】 |
ルート設定でミドルウェアを指定し利用する。
1 | Route::get('/hello', 'HelloController@index')->middleware(App\Http\Middleware\MyMiddleware::class); |
グローバルミドルウェア
/app/Http/Kernel.php
で下記が設定可能
- グローバルミドルウェア
(すべてのコントローラー、アクションでここに登録したミドルウェアが動作) - グループミドルウェア
(複数のミドルウェアをまとめて動作) - ルートミドルウェア
(ルート設定で指定できる、ミドルウェア毎に名前を設定) - プライオリティの設定
(ミドルウェアの優先順位を指定)