如何在ORM Symfony 4中将列的数据类型从STRING更改为TEXT?



我通过实体的注释定义了我的表信息。所以我想将以下列更改为文本而不是字符串。所以我有这个:

    /**
     * @ORMColumn(type="string", length=255)
     */
    private $category;

我把它改成这样:

    /**
     * @ORMColumn(type="text")
     */
    private $category;

我希望它成为一个文本,所以在迁移后我检查了我的数据库,它说它是一个长文本。我不知道这怎么可能,但在参考我的迁移之前,我想知道如何使其成为文本而不是长文本。

编辑:我正在查看迁移文件,我看到这个: $this->addSql('ALTER TABLE cabinet CHANGE category category LONGTEXT NOT NULL');

我从来没有输入过长文本,所以我不知道教义是从哪里得到的。

答案似乎是给出 TEXT 的长度(我认为它被定义为固定值(,所以你应该@ORMColumn(type="text", length=65535)而不是@ORMColumn(type="text")。由于另一个SO问题,我能够找到这个答案。

如果要通过迁移进行更改,则需要注意转换为文本将基于当前列长度;

$table = $schema->getTable("tablename");
$column = $table->getColumn("columnname");
 /** There you need set size of text that you want to use
  *  To TINYTEXT => length =  0 - 255
  *  To TEXT => length = 256 - 65535
  *  To MEDIUMTEXT = 65536 - 16777215
  **/
$column->setLength('65535');
$column->setType(Type::getType(Types::TEXT))

仅当当前类型不是 Types::TEXT 时,它才会更改当前类型。如果你的文本是小文本,你需要把它设置为文本,你需要首先将类型更改为字符串,设置长度,然后再将其设置回文本。

相关内容

  • 没有找到相关文章

最新更新