PCS開発チーム
PCS開発チーム
Eloquentを使う時はQuery Builderに処理が移行しないように使うことが重要
SQLだけ知ってる人が新たにLaravelを使おうとするとSQLで見たことあるメソッドを使おうとする。
use App\Models\Post;
Post:::insert([]);
「LaravelのEloquentを使って、レコードの追加はinsert…」何も間違ってないように見えるけどこれが壮大な罠。
Eloquentを使ってるように見えるけど実際はQuery Builderに処理が移行している。
「EloquentにないメソッドはQuery Builderのメソッドが使われる」
Laravel内部で勝手に移されてるので知ってないとEloquentを使ってるつもりのままずっと間違える。
$fillable
はEloquentの機能なのでQuery Builderでは無効。
Eloquentを使ってるつもりでQuery Builderを使うと$fillable
のような安全機能が無視されるので非常に危険。
ここまで理解しているLaravelに慣れてる人は「Eloquentの機能しか使わない」対策をしている。
新規作成
$post = Post::create([]):
更新
$post->fill([])->save();
この辺はLaravelを使っていれば自然と身に付く定番の型なので覚える。
create()
fill()
save()
どれもQuery BuilderにはないのでうっかりでもQuery Builderに移行していたらメソッドがなくエラーで落ちるから必ず気付く。