Laravelにてモデルを定義し、開発を進めています。
既存DBには必要のないカラムがたくさんあり、量も膨大な為、これらを削減する場合としない場合で読み込み速度が変わるのではないかと期待しています。
そこでLaravelのドキュメントを調べたらクロージャによるグローバルスコープというものがあるのを発見しました。
https://readouble.com/laravel/6.x/ja/eloquent.html
要はコントローラーでクエリビルダを呼び出すときに毎回冗長なselect文を書くのはナンセンスだと思うため、モデルを呼び出す段階で既にselectするカラムを指定しておきたいという考えです。
<?php namespace App; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; class Hoge extends Model { protected $table = 'hoge_table'; /** * モデルの「初期起動」メソッド * * @return void */ protected static function boot() { parent::boot(); static::addGlobalScope((Builder $builder) { $builder->select('id', 'age', 'name'); }); } }
ドキュメントを参考に、以上のように書いてみましたが、protectedの書く位置が間違っているや「syntax error, unexpected '$builder' (T_VARIABLE)」などのエラーが出て動きませんでした。
今回のように単純なselect文だけを指定したい場合、どのように記述すればよろしいでしょうか?
ご存じの方いらっしゃいましたら、ご回答よろしくお願い致します。
======= 追記 =======
①コード変更しました。
②画像のようなエラーが出ています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/27 07:13
2021/12/27 07:20 編集
2021/12/27 07:26
2021/12/27 07:44 編集
2021/12/27 07:46