あじちゃんの備忘録。

〜ここはメモ帳です

larave5.5 において enum を含む table では getColumnType() は使用できない

以下の記事で解決しました!

 

blog.azimicat.com


以下元記事 


以下のようにカラムのタイプを確認してchange()をかけようとしたところ、エラー (Unknown database type enum requested) が発生する

if (!Schema::getColumnType('animal', 'cat') === 'int') {
  $table->staring('cat')->change();
}

似ているissueが上がっていたのでみてみたけど結局は 使えない という結論になった。

https://github.com/cloudstudio/resource-generator/issues/10

このメソッドにquick try/catchを入れて、DBALExceptionsをキャッチしたときに‘enum’を返すとうまくいくようです。

って感じのことが書かれてた。わからん。

 

カラム属性の確認をするのに、

vendor/laravel/framework/src/Illuminate/Database/Schema/Builder.php

public function getColumnType($table, $column) を使おうとしたのだけれど

このテーブルにenumが含まれるとDBALExceptionsが飛ぶ様子。

正確にはこれが返ってくる

In AbstractPlatform.php line 434:
  Unknown database type enum requested, Doctrine\DBAL\Platforms\MySQL57Platform may not support it.  

 

MySQL57Platform は上記URLの人が言うMarinaDB同様に enum に対応していないので使えないよってことらしい。(読んだそのままだ...

 

どうしようもないのでチェックは諦めることにした。

せっかくあるのに使えないなんて残念。