モデルに public function xxxXxxx(): Attribute とメソッドを定義 ↓ $model->xxx_xxxx でアクセスできる <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Casts\Attribute; class User extends Model { public function prefectureName(): Attribute { return Attribute::make( get: fn () => $this->prefecture->name, ); } } $this->prefecture_name; // 例:「福岡県」という文字列が返ってくる ※ Laravel 9 以降の書き方です。
モデルに public function scopeXxxx() とメソッドを定義 ↓ $model->xxxx() で取得範囲を絞る <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder; class User extends Model { public function scopePublish(Builder $query): Builder { return $query->where('is_publish', true); } } User::publish()->get(); // is_publish=trueのUser”だけ”取得できる
モデルに public function scopeXxxx() とメソッドを定義 ↓ $model->xxxx() で取得範囲を絞る <?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder; class User extends Model { public function scopePublish(Builder $query): Builder { return $query->where('is_publish', true); } } User::publish()->get(); // is_publish=trueのUser”だけ”取得できる もし自分で1から実装していたら、 スコープを使わずその都度で書いていた。 → レビューで指摘されて手戻り! になっていたかも。