【Laravel】Schema::getColumnListingで取得できる列の並び順について

Schema::getColumnListingで取得できる列の並び順について

Laravel使って開発しているときに、自分のローカル環境だけ、Schema::getColumnListingで取得される列の並び順が定義順ではなく物理名順で取得されていた。

本番環境や他の開発者の環境では定義順で取得されている。なんで??

起こっている事象

例として、以下のカラムを持つテーブルがあるとする。

id name age gendor comment

Schema::getColumnListingで列情報を取得すると、期待する結果としては以下の通り。

['id', 'name', 'age', 'gendor', 'comment']

上記に対して、自分のローカル環境では、

['age', 'comment', 'gendor', 'id', 'name']

と、物理名順で取得されちゃう。処理的にこれだと困ることに。

原因はDB(MySQL)のバージョン

分かってしまえば単純なことだったけど、原因はMySQLのバージョンだった。

自分のローカル環境(取得結果が物理名順)

  • PHP 7.3.20-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Jul 9 2020 16:34:09) ( NTS )
  • mysql Ver 8.0.21 for Linux on x86_64 (MySQL Community Server – GPL)
  • Laravel 5.7.29

本番環境(取得結果が定義順)

  • PHP 7.3.16 (cli) (built: Mar 17 2020 10:18:38) ( NTS )
  • mysql Ver 14.14 Distrib 5.7.29, for Linux (x86_64)
  • Laravel 5.7.29

MySQLの最新バージョンは何かと…と聞いてはいたが、そこまで気にしていなかったけどこういうことか…

ローカル環境のバージョンを5.7に落としたらちゃんと定義順で取得できるようになった。

結論

開発においてバージョンの統一は大事!(当たり前だけどw)

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください