コーディングブログ

Coding Blog

Laravel基本覚書

Laravel

    インストール

    Composerのインストール

    ダウンロード

    Laravelのインストール

    プロジェクトの作成

    ルート情報設定ファイル

    /routes/web.php

    viewテンプレートディレクトリ

    /resources/views

    モデル

    モデルの生成

    モデルディレクトリ
    /app

    コントローラ

    コントローラの生成

    コントローラディレクトリ
    /app/Http/Controllers

    データベース関連

    • Eloquentではテーブル名は複数形、モデルは単数形といった命名規則にすると、
      テーブルとモデルを自動的に紐づけて動くようになっている。

    データベース初期設定

    mysqlはデータベース名やホストやユーザー名、パスワードを修正。

    sqlite格納ディレクトリ

    /database

    データベース設定ファイル

    /config/database.php

    環境変数設定ファイル『.env』

    接続タイプとデータベースのフルパスを記入。
    sqliteの場合はこちら

    /.env
    DB_CONNECTION=sqlite
    DB_DATABASE=【フルパス】

    マイグレーション

    使用するデータベースのテーブル類の作成処理。
    マイグレーションの機能を使い、コマンド一発でテーブル類を生成。
    途中でテーブルの構造などを変更した場合も、古いテーブルを削除して新しいテーブルに更新できる。

    マイグレーションファイル生成

    マイグレーションディレクトリ
    /database/migrations

    マイグレーションを実行

    マイグレーションしていないマイグレーションファイルを実行してくれます。

    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に下記を追加。
    これでカラムの最大長を変更して、実行ができる。

    参考サイト
    その他の対策も載っています。

    https://qiita.com/beer_geek/items/6e4264db142745ea666f

    シーディング

    マイグレーションで生成したテーブルに初期データを登録しておくことができる。

    シーダーファイルの生成

    シーダーディレクトリ
    /database/seeds

    シーディングの実行

    /database/seeds/DatabaseSeeder.php
    に実行したいシーダークラスを追加し、その後実行。

    session

    sessionの保存先をデータベースに変更する

    デフォルトではstorage/framework/sessions/にファイルで保存されていくが、それをデータベースに変更する。

    sessionに関する設定ファイル
    config/session.php

    /.env
    SESSION_DRIVER=database

    session用のデータベースを用意する

    session用のテーブルは仕様が決まっていて、それに沿った形でないといけません。
    artisanコマンドでマイグレーションファイルを生成します。

    サービスプロバイダ

    アプリケーション全体で設定を変更するなどの処理を行うのが『サービスプロバイダ』。
    /app/Providers/AppServiceProvider.php
    bootメソッドが起動時に実行されるので、コントローラ類が呼ばれる前に処理できる。

    サービスコンテナ

    コントローラのアクションメソッドで引数にクラスと変数を用意するとメソッドにインスタンスが渡される。
    public function index(Request $request, Response $response)

    インスタンス生成に引数(今回はid)を必要とするクラスの場合は下記で生成する。
    $myservice = app()->makeWith('App\MyClasses\MyService', ['id' => $id]);

    ミドルウェア

    リクエストを操作する仕組み。

    ルート設定でミドルウェアを指定し利用する。

    グローバルミドルウェア

    /app/Http/Kernel.phpで下記が設定可能

    • グローバルミドルウェア
      (すべてのコントローラー、アクションでここに登録したミドルウェアが動作)
    • グループミドルウェア
      (複数のミドルウェアをまとめて動作)
    • ルートミドルウェア
      (ルート設定で指定できる、ミドルウェア毎に名前を設定)
    • プライオリティの設定
      (ミドルウェアの優先順位を指定)