Laravel 8.x

Laravel 8.x Laravel8.x

Laravel 8は2020年9月8日 にリリースされました。
Laravel Jetstream、モデルディレクトリ、モデルファクトリー、マイグレーションスカッシング、レート制限の改善、時間テストヘルパー、動的ブレードコンポーネント等多くの新機能が追加されています。
なお、Laravel8はLTSではありませんので使用には注意が必要です。

Laravel

[Laravel]更新されたフィールドがあるかどうか判定する

編集フォームで、変更があった場合だけ何かするというような処理はありがちだと思いますが、そういったときに便利な機能があります。 Model::isDirty() メソッド を使うと、変更があったかどうかのBool値を返してくれます。引数にフィ...
Laravel

LaravelAdminで複数カラムのUniqueValidationを行う方法

LaravelAdminで複数カラムのUniqueValidationを行う方法がわからなかったので調査しました。 前提 環境は Laravel8 ユーザーにタグを付与する場合を例にします。 テーブル構成はこんな感じ users tags ...
Laravel

laravel8のUnitTestでfackerが使えない

UnitTestとFactoryを作成してテストを実行してみたら Unknown formatter "関数名" faker というエラーになってFakerが使えなかった。作成時に利用したコマンドはこんな感じ artisan make:te...
Laravel

Laravelのモデルを共通化する(Scope)

Queryの共通化 例えばこんなQueryがあったとして $users = \App\User::where('age', '>=', 20) ->whereDate('created_at', today()) ->get(); mode...
Laravel

model::update()で更新するとObserverでキャッチできない

LaravelにObserverという機能があって、モデルが作成されたり変更された時のイベントコールバックを登録することができるのですが、なぜかUpdate時のイベントがキャッチできない問題に遭遇しました。 原因 単一モデルじゃないとキャッ...
Laravel

observerをキャンセルする

Laravelにはobserver機能があって、Modelに書き込みが会った時のイベントをキャッチして何かやらせるということができます。CakePHPで言うところのafterSave()みたいなものですね。 Observer自体は公式マニュ...
Laravel

[Laravel Mix] 型定義ファイル(.d.ts)を作ったら”TypeScript emitted no output”エラーになる

環境 Laravel-mix 6 Vue 2.7 型定義ファイルがないモジュールがあったので、@typeフォルダを作って型定義ファイルを入れてビルドしてみたが・・・ Module build failed (from ./node_modu...
Laravel

Laravel adminでユーザーのパスワードを管理する

Laravel Adminを使ってユーザーの情報を管理したい場合があると思います。ただ、FormやModelが通常とは違いAdminで独自なので、前処理、後処理をどうやってけけばいいのか悩みますね。結論から言うとこんな感じにすると良いかと思...
Laravel

Uncaught TypeError: Vue.use is not a function

Laravel mix + vue で開発していると Uncaught TypeError: Vue.use is not a function が、出たり出なかったりすることがあるのだが、ようやく意味がわかった。 ビルド途中でリロードする...
Laravel

Laravel Mix+Vue2をTypeScriptに対応させようとしてハマった件

LaravelMix+Vue2をTypeScriptに対応させるべく色々やっていたのだが色々はまりましたので、その時の忘備録です。こんなののために1日潰れました。 いまさらVue2にするとかはないと思いますがあまり情報がなかったので残してお...
Laravel

Laravel sail によるデバッグ設定

Laravel sail で構築したアプリのPHPデバッグを行う方法です。 設定変更 Xdebugについては標準でVer3系のものがインストールされています。 .ENV ファイルに以下の環境変数をセット SAIL_XDEBUG_MODE=d...
Laravel

[Laravel] sailのDBサーバーへのアクセスが拒否される

Laravel sail ベースで作成したコンテナのDBで新しいDBを作ろうとしたら・・・ ユーザー 'sail'@'%' によるデータベース 'xxxxxxx' へのアクセスは拒否されました。 原因 デフォルトで作られるユーザーの権限では...
Laravel

Laravel Sailでphpmyadminコンテナを追加する

Laravel Sailでphpmyadminを使う方法です。 sailが作ったdocker-compose.yml の services セクションに以下を記載しましょう。 もしくは、docker-compose.override.yml...
Laravel8.x

[Dusk]Laravel8 Duskで自動的にブラウザのセッションをクリアする

Laravel8 Duskでは、テストが変わってもブラウザの状態が引き継がれてしまいます。 テストが変わってログイン中の状態を引き継いでほしくないなど、いちいち気にしないと行けないのは面倒過ぎます。逆に、簡略化のために引き継いでほしいという...
Laravel8.x

[Laravel8] Model::value()の実装が意味不明

こんなコードを書いたら $user_id = User::where()->first()->value('id'); $user_id の中身は 1でした。 なんだそりゃ?where()が無視されてしまうみたい。 $user = User...
Laravel

Laravel Duskをsailから動かしてみる(動いた)

前回、Duskを動かすために色々試してみたのですが、うまくいかなかったので、Sailでやってみました。 結論 急ぐ人向けに結論だけ先に述べます。 Sail経由でDuskを動かす場合は、sailコマンド経由でやりましょう。 ./vendor/...
Laravel

Laravel Duskが動かん(on Docker) (失敗編)

Laravelでテストコードを書いてますが、通常のUnitTestはHTTPレスポンスの中身のテキストしかテストできません。jQueryとかVueとかフロントでレンダリングしているものに関してはブラウザ経由でアクセスする必要があります。 こ...
Laravel

[laravel]dockerで動かしているアプリに対して、ホストでartisanしたらダメ、絶対。

artisanうまく動かないなぁと思って、下記コマンドでキャッシュをクリアしたら。 php artisan cache:clear php artisan config:cache 根本的に動かなくなった There is no exist...
Laravel8.x

[Laravel]クラス名が重複しているエラー

laravel で artisan コマンドを使うと何故かこんな表示が Cannot declare class (クラス名), because the name is already in use 色々調べてみたのだが、別にクラス名が重複...
Laravel8.x

Laravel sailでLaravel開発&デバッグ環境構築

動作環境 今回の環境は以下の通り Ubuntu Docker(インストール済み) 作業環境は Windows10Pro VSCode DockerDesktop 今回は、Ubuntu上で構築したDocker環境を、Windows10から接続...