IQ120の口コミ

病院・鍼灸・整体等、八王子周辺のものをレビュー

LaravelのEloquentって使えなくない?

   

Eloquent ORMって実際微妙じゃね?
いや、俺が使いこなせてないだけかもしれないけど。

何が気に入らないのかっていうと、例えばプロフィールテーブルがあるとして、その中に趣味IDカラムがあって、別の趣味テーブルと結合して一覧を表示したいとするじゃん?

30人分表示するのに、普通にEloquentモデル作ってそれやると、どんなクエリが生成されると思う?

select * form 'プロフィールテーブル'
select * from `趣味テーブル` where `趣味`.`id` = '1' limit 1
select * from `趣味テーブル` where `趣味`.`id` = '2' limit 1
select * from `趣味テーブル` where `趣味`.`id` = '1' limit 1
select * from `趣味テーブル` where `趣味`.`id` = '1' limit 1
select * from `趣味テーブル` where `趣味`.`id` = '3' limit 1
select * from `趣味テーブル` where `趣味`.`id` = '1' limit 1
select * from `趣味テーブル` where `趣味`.`id` = '2' limit 1
以下略

31個クエリ発行とかさ…。
eloquent リレーションって、自動で外部結合してくれる機能だと思ったら全然違うのね。
つか、せめて重複クエリくらいは省こうぜ。
雄弁?無駄口を叩くな。

モデル作るより直接クエリ書いた方が早いし速いんじゃないかと思いながらも、Laravelの練習の為に渋々やってみたらこのざまだ。

パフォーマンス的にとても許容できないから、結局自分でLEFTJOINだよ。

という訳で、これからLaravelを勉強し始める人に注意喚起。

Eloquentは万能じゃないから使い所に気をつけよう。

今後一切SQLを覚える気が無いデータベース初心者は、Laravelの解説書通りEloquentモデル作ってリレーション定義したらいいんだろうけど、いずれどこかでちょっと複雑な事をやろうとした時、躓く可能性が大なのを心に留めておいて欲しい。

Laravelで外部結合をするのがそもそもの間違いではないかと言う話

adtes




 - プログラミング