1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

LaravelのEloquentで躓いたときの覚書

Last updated at Posted at 2018-12-04

Laravelでとっても便利な機能Eloquent。
お手軽にDBからデータを取れるようになるのでよいものであるのだが、
微妙に躓いたので、その覚書。

前提

躓いたのは、SQLにおいては基本も基本select文投げたときのこと。
主キーを「user_id」としてvarchar型だったととき、なぜか返って来たuser_idの値が「0」となっていたから。
しかも、他のカラムは普通に正しい値が入っている、と来る。

SELECT * FROM table;とかしたときに理想としては
image.png
みたいな形で返ってきてほしかったのだが、
image.png
こんな形で返ったきたわけである。

謎謎謎、というか、理解し切ったうえで使っているわけでないことが響く。
実際に利用していたテーブルは連結していたり、別の処理も行っていたため、
当初はバックエンド側の処理やSQLが間違っているのでは、と調べていたが、間違っているところは見つからない、

原因

原因が判明したのは、Eloquentの仕様を調べていたときのことだった。
原因はコイツ……!

こいつが何かっていうと、主キーのオートインクリメントの設定パラメータである。
デフォルトが「true」。

そう、デフォルトでTRUEなのである。

falseにしておいてよ。
してほしいときは自分で書くって……。

ここがtrueであったためにどうやらカラムの値を数値型として取り扱おうとしていたっぽい。
Eloquentを継承しているクラスで、falseの設定でオーバーライドしたら、無事に想定していた挙動になった。
よかった。

ひとまず今回の教訓としては、
「使うものはまず仕様を確かめよう」
です。

組み立て以外で説明書読まずに触って覚えようとするのはやめないと……。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?