LaravelEloquent, Laravel, PHP

結論

削除しようとしているそのモデル、SoftDelete 設定になってません?

assertDatabaseMissing ではなく assertSoftDeleted 使ってね。

詳細

テストコードをたくさん書いていくぜー!

って張り切ったものの、めっちゃ足止め食らいました…。

リモートデバッグで1行ずつ動かしても、

App\Models ...

LaravelFactory, Laravel, PHP, Test

結論setUpBeforeClass() が実行されるタイミングでは factory は使えない。(そもそもデータの状態が他のテストケースに依存しないようにした方が良い)
setUp() 内で parent::setUp() 呼ぶの忘れてない?(公式にも「テストクラスに独自のsetUpメソッドを定義する場合は、親のクラスのparent::setUp()/parent::tearDown()を ...

LaravelLaravel, PHP, Storage, ファイル操作

結論

config/filesystems.php に、自前で設定を追加すればOK。

詳細

Laravel のデフォルト設定だと、

'local' => ,

となっておりまして、 プロジェクトルート/storage/app が起点になってました。

例えば、/storage/temp にある全ファイルを取得したい、という場合に、

$tempfiles ...

Laravel, PHPLaravel, PHP, Rule, Validation, バリデーション, 年月, 年月日, 日付関数

結論

PHP に checkdate() 関数が用意されてました…。

PHP: checkdate – Manual

言い訳

年月日、もしくは年月のみがパラメーターで渡されてくる場合に、年月日として有効かどうか?のパリデーションをかけたかったわけです。

で、Carbon とかで用意されてる…よね? とか思っていろいろ探してたら見つからなくて、PHP ...

LaravelCSV, Excel, Laravel, Laravel-Excel, PHP, Shift_JIS, UTF-8, エクスポート, ダウンロード, 文字化け

結論作成した HogeExport クラスに getCsvSettings() で CSV の設定を用意しておく。
忘れずに WithCustomCsvSettings を implement する。

2つ目を忘れてると、getCsvSettings() 用意しておいても無視されて気づかないのです…。

詳細

Excelで csv ファイルを開いたときに文字化けする現象で ...

Laravelartisan, composer, migration, PHP, Queue

結論作成された migration ファイルを普通に削除する
composer dump-autoload 実行
もっかい作る
詳細php artisan make:migration add_new_columns_to_user_table

とか実行した後に、「あ、しまった、 --table 指定するの忘れたー!」と思って再作成。

すると

failed ...

Laraveldebug, Laravel, PHP, Queue, Worker, バッチ処理, ブレークポイント

結論

QUEUE_DRIVER=database にしておけば failed_jobs テーブルの exception カラムに StackTrace が記録されるので、そこから辿るべし。

詳細

Queue に突っ込んだ処理をデバッグしようとしても全然言うこと聞いてくれない。

ブレークポイントが効かないので、仕方なく Log::debug() したりもしたんだけれど、何も ...

LaravelEloquent, Laravel, PHP

結論

DB::table() ->leftJoin() で第二引数にクロージャーを渡せるので、その中でフィルタ的な処理を書き込む。

詳細

ユーザーが投稿した記事の一覧を取得する際はこんな感じで LEFT JOIN を指定。

$users = DB::table('users') ->leftJoin('posts', 'users.id', '=', 'posts. ...

LaravelEloquent, Laravel, PHP

結論

ありがちなのが、

{{ $user->getFirstName() }}

の $user->getFirstName() で、なぜか配列(文字列ではなく)が返ってきていた、というヤツ。

詳細

「これ、なーんかあったよなー…🤔」

って毎度悩むのでメモ。

bladeでこのエラーが発生すると、妙に場所の特定が難しいんですよね…。

Laravel1対n, 1対多, DB, Eloquent, Laravel, PHP, QueryBuilder, クエリビルダ, サブクエリー, リレーション, 多対多

結論

Post と Comment (1対多の関係)を例にすると、

コントローラーからフツーに $posts を view に渡して…。

blade のループ内で

@forelse($posts as $post) <div>{{ $post->title }}</div> <div>{{ $post->commen ...