Laravelでとっても便利な機能Eloquent。
お手軽にDBからデータを取れるようになるのでよいものであるのだが、
微妙に躓いたので、その覚書。
前提
躓いたのは、SQLにおいては基本も基本select文投げたときのこと。
主キーを「user_id」としてvarchar型だったととき、なぜか返って来たuser_idの値が「0」となっていたから。
しかも、他のカラムは普通に正しい値が入っている、と来る。
SELECT * FROM table;
とかしたときに理想としては
みたいな形で返ってきてほしかったのだが、
こんな形で返ったきたわけである。
謎謎謎、というか、理解し切ったうえで使っているわけでないことが響く。
実際に利用していたテーブルは連結していたり、別の処理も行っていたため、
当初はバックエンド側の処理やSQLが間違っているのでは、と調べていたが、間違っているところは見つからない、
原因
原因が判明したのは、Eloquentの仕様を調べていたときのことだった。
原因はコイツ……!
こいつが何かっていうと、主キーのオートインクリメントの設定パラメータである。
デフォルトが「true」。
そう、デフォルトでTRUEなのである。
falseにしておいてよ。
してほしいときは自分で書くって……。
ここがtrueであったためにどうやらカラムの値を数値型として取り扱おうとしていたっぽい。
Eloquentを継承しているクラスで、falseの設定でオーバーライドしたら、無事に想定していた挙動になった。
よかった。
ひとまず今回の教訓としては、
「使うものはまず仕様を確かめよう」
です。
組み立て以外で説明書読まずに触って覚えようとするのはやめないと……。