Laravel+Vue+DockerでWebサービス
docker-compose up -d workspace php-fpm nginx postgres
docker-compose exec workspace composer create-project --prefer-dist laravel/laravel . "6.8.*"
データベースマイグレーション
docker-compose exec workspace php artisan make:migration create_articles_table --create=articles
マイグレーション実行
docker-compose exec workspace php artisan migrate
$this
$this->belongsTo('App\User')とありますが、この$thisは、Articleクラスのインスタンス自身を指しています。
$this->メソッド名()とすることで、インスタンスが持つメソッドが実行され、$this->プロパティ名とすることで、インスタンスが持つプロパティを参照します。
リレーション
Articleモデルは、Modelクラスを継承していることで、belongsToメソッドというものが使えます。
belongsToメソッドの引数には関係するモデルの名前を文字列で渡します。
すると、belongsToメソッドは、関係するモデルとのリレーション(belongsToメソッドの場合は、BelongsToクラス)を返します。
このようなリレーションを返すuserメソッドを作っておくと、$article->user->nameとコードを書くことで、記事モデルから紐付くユーザーモデルのプロパティ(ここではname)にアクセスできるようになります。
記事と、記事を書いたユーザーは多対1の関係ですが、そのような関係性の場合には、belongsToメソッドを使います。
それ以外の関係性の場合は、それぞれ以下のメソッドを使います。
1対1の関係は、hasOneメソッド
1対多の関係は、hasManyメソッド
多対多の関係は、belongsToManyメソッド
各メソッドに渡すべき引数やサンプルコードは以下を参照してください。
$article->user; //-- Userモデルのインスタンスが返る
$article->user->name; //-- Userモデルのインスタンスのnameプロパティの値が返る
$article->user->hoge(); //-- Userモデルのインスタンスのhogeメソッドの戻り値が返る
$article->user(); //-- BelongsToクラスのインスタンスが返る
キャッシュについて
ログイン試行回数はLaravelのキャッシュで管理されています。
Laravelのキャッシュの保存先は、デフォルトの設定ではファイルとなっており、storage/framework/cache/dataディレクトリに保存されます。
キャッシュの保存先の設定はconfigディレクトリのcache.phpにあります。
☆docker-compose up -d workspace nginx php-fpm postgres mailhog
☆docker-compose exec workspace npm run watch-poll
docker-compose up -d workspace php-fpm nginx postgres
regex:正規表現
フィールドが指定された正規表現にマッチすることをバリデートします。
このルールは内部でPHPのpreg_match関数を使用しています。パターンは有効なデリミタを使用していることも含め、preg_matchが求めているフォーマットにしたがって指定する必要があります。たとえば:'email' => 'regex:/^.+@.+$/i'
注目: regexとnot_regexパターンを使用する場合はルールをパイプ(縦棒)で区切らず、ルールの配列で指定する必要があります。とくに正規表現に縦棒を含んでいる場合に該当します。
アクセサについて
今回作った2つのメソッドは、その名前がget...Attributeという形式になっており、アクセサです。
そのため、実際にこのメソッドを使う時は、
$user->count_followers
といったように
getとAttributeの部分は除く
残った部分をスネークケースにする(全て小文字で、単語と単語の間は_で繋ぐ書き方)
メソッドの呼び出し時に通常必要な()は記述しない
といった書き方をします。
ssh ec2-user@54.150.158.72 -i ~/.ssh/laravel-ci-ec2-user.pem
Laravel Framework 6.18.20
php artisan serve --port 8080