$table->string('text');
の移行列タイプをテキストタイプに変更する必要があります。いくつかの方法でそれを試みましたが、いずれも機能しませんでした。一度の移行でそれを行うことは可能ですか?列をドロップしてから新しいタイプで再度作成することはできますが、1回の移行でそれを行うことは可能でしょうか?
新しい移行を作成し、 1つの列タイプのみを変更 :
public function up()
{
Schema::table('sometable', function (Blueprint $table) {
$table->text('text')->change();
});
}
この作業を行うには、doctrine/dbal
をインストールする必要があります
composer require doctrine/dbal
Laravel Doc による
次のようにできます
Schema::table('yourTable', function (Blueprint $table) {
$table->text('text')->change();
});
composer.jsonファイルにdoctrine/dbal依存関係を必ず追加してください
TABLE移行を行うことは可能です。
他の投稿で述べたように、必ずプロジェクトルートからcomposer install doctrine/dbal
を実行してください。
これらは次のものでセットアップされます。
php artisan make:migration alter_table_[yourtablenamehere]_change_[somecolumnname] --table=[yourtablenamehere]
プロジェクトのルートから。
ドキュメントから:
https://laravel.com/docs/master/migrations#modifying-columns
class AlterTableSomething extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('table', function (Blueprint $table) {
$table->text('column_name')->change();
});
}
}
change()
を使用して次のエラーが発生した場合
不明なデータベースタイプの列挙が要求されました。Doctrine\ DBAL\Platforms\MySQL80Platformはそれをサポートしていない可能性があります。
これは、enumタイプを持つテーブルに何らかの列(必ずしも変更された列ではない)が存在することを意味します。したがって、代わりにchange()
を使用して、次の関数を使用できます。
_public function changeColumnType($table, $column, $newColumnType) {
DB::statement("ALTER TABLE $table CHANGE $column $column $newColumnType");
}
_
そして、そのように使用します:$this->changeColumnType('sometable','text','TEXT');