IT系バンドマンの日常

備忘録やライフログなど

【PHP7】コンストラクタインジェクションで差し替えたいときだけ差し替えれる書き方

忘れるわりに重要なのでメモ!

    private $hogeService;

    public function __construct(HogeService $hogeService = null)
    {
        $this->hogeService = $hogeService ?? new HogeService();
    }

参考サイト

あるコミットの変更履歴のあるファイル一覧だけを取得したい

下記コマンドでいけます

コミットid:hogehogeの変更履歴のファイル一覧が欲しい場合

git diff --stat --name-only hogehoge\^..hogehoge

zshだとキャレットをエスケープしないとうまく動きませんでした

参考記事

Gitでcommit間の変更ファイル一覧を出力

PHPStormでphpファイルがphpファイルとして認識されないとき

ある日を堺にPHPStormがある特定の名前のPHPファイルをハイライトしてくれなくなりました・・・

原因

PHPファイルを追加する際、ファイルの関連付けの設定をtxtファイルとして追加していたからでした。

解決方法

  1. Preferences > File Types > Text を選択
  2. Registered Patternsのリストから特定のファイルの名前を見つけて削除する

参考サイト

PhpStorm : 拡張子が.htmlのファイルをphpファイルとして認識させる

【自分用メモ】サロゲートキーとナチュラルキーについて

いきなりまとめ

サロゲートキーを使うときはナチュラルキーにuniq indexを必ずつける。複合主キーを避けるためにもサロゲートキーは有効。

サロゲートキー

複合主キーを使えばデータはユニークになっているものの、連番のid持たせておくと実装上らくだぜってときに付与しておくカラムのこと

ナチュラルキー

上の説明で言う複合主キーのところのカラムのこと

ここのサイトで勉強させていただきました

サロゲートキーと複合主キー

LaradockでのLaravelローカル開発環境構築

自分用の備忘録です

Environment

Tools Version
Laravel 5.5
Laradock 5.9.0
MySQL 8.0

Project name : myapp

Laradock directory name : laradock-myapp

laradockの場合ディレクトリ名がそのままdockerのimageのprefixになるので、ディレクトリ名はlaradock-{プロジェクト名}としました。 また、プロジェクトの配布のしやすさを考慮して、プロジェクトのルートディレクトリにgit submoduleとしてlaradock-myappを配置しました

1. 設定ファイルの編集

myapp/.env

DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=laradock
DB_PASSWORD=laradock

myapp/laradock-myapp/.env

DATA_SAVE_PATH=.laradock/data

MYSQL_VERSION=8.0
MYSQL_DATABASE=myapp
MYSQL_USER=laradock
MYSQL_PASSWORD=laradock
MYSQL_PORT=3306

laradock-myapp/.envのなかで定義したMYSQL_DATABASEの名前がそのままmysqlコンテナの中のDB名になります。

3. 起動!

コンテナを起動します

docker-compose up -d nginx mysql

ここまでくればブラウザでlocalhostにアクセスするとlaravelのサイトにアクセスできるようになってると思います。

4. マイグレーションファイルの実行

docker exec -it laradock-myapp_workspace_1  /bin/bash

php artisan migrate

5. 使った後はコンテナを停止させておきましょう

プロジェクトごとにLaradockを持ってる場合は1つずつしかコンテナを起動できません。(ポートの設定を変えればできるかも) なれるまでは利用し終わったコンテナは下記コマンドで停止させておきましょう。

docker-compose kill

Laravelの外部キー制約ではまった

Laravelでmigrationファイルをかくとき外部キー制約の設定ではまったのでメモ

まちがい

$table->integer('user_id')->nullable(false);
$table->foreign('user_id')->references('id')->on('users');

せいかい

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');

外部キー制約を貼るカラムにnullable(false)を設定するとエラーでました。 公式リファレンスをもとにunsigned()を設定して再度実行するとできました!

以上です!笑