laravel8のhasmanyでgroupbyしたいけど、メソッドが存在しないので、アクセサ(getカラム名or好きな名前Attribute)でgroupbyしてみた。

laravel8のhasmanyでgroupbyしたいけど、メソッドが存在しないので、アクセサ(getカラム名or好きな名前Attribute)でgroupbyしてみた。

旧システムから移植する時に、操作ログをhasmanyで持たせたいのだが、ログが大量にあるので
日付毎・種別毎で、一番新しいログだけ表示したい。

laravelのアクセサの説明
モデルのカラムにアクセスしたい時に、何らかの処理を自動化したい時に使う(nameに様をつけるとか)
モデルに、getカラム名Attributeというメソッドを記述すると、取得する時に自動的にコールされる。

User.php

カラム名以外も独自の項目が追加したり、リレーションも使えたりする
User.php

モデル取得したら自動的に取得して欲しいので
存在しないカラムを、モデルにappendsで追加する
User.php

これで、普通にeloquentモデルを取得すれば、普通のカラムと同じ感じでhistory_logsで取得できる。
hasmanyとwithは不要!