我通过实体的注释定义了我的表信息。所以我想将以下列更改为文本而不是字符串。所以我有这个:
/**
* @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 时,它才会更改当前类型。如果你的文本是小文本,你需要把它设置为文本,你需要首先将类型更改为字符串,设置长度,然后再将其设置回文本。