强制原则数据类型选择,从 tinytext 到 varchar
Force doctrine datatype choice, from tinytext to varchar
我用固定长度的短文本属性描述了我的实体。当我使用命令 make:migration
时,它会生成数据类型为 TINYTEXT
的 SQL 代码。在我的例子中,使用 VARCHAR
会更准确,因为我的属性具有较短的固定长度。
我搜索过,但没有找到令人满意的解决方案。
我想指示 Doctrine 将 VARCHAR 用于此文本。可能吗?怎么样?
如果我不能:我在生成的 php 迁移代码中看到它建议让我自己在生成的 SQL 上进行编辑。我可以在这里把TINYTEXT
改成VARCHAR
吗?学说会在未来的修改中考虑到它吗?
<?php
...
/**
* @ORM\Entity(repositoryClass=UserRepository::class)
*/
class User
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="text", length=64, unique = true)
*/
private $mail;
/**
* @ORM\Column(type="text", length=64)
*/
private $hash;
/**
* @ORM\Column(type="text", length=32)
*/
private $salt;
...
}
MySQL
CREATE TABLE user (
id INT AUTO_INCREMENT NOT NULL,
mail TINYTEXT NOT NULL,
hash TINYTEXT NOT NULL,
salt TINYTEXT NOT NULL,
UNIQUE INDEX UNIQ_8D93D6495126AC48 (mail), PRIMARY KEY(id)
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
学说将 type="text", length=64
映射到 mysql 的 TINYTEXT
。
您正在查找字符串类型。
/**
* @ORM\Column(type="string", length=64, unique=true)
*/
private $mail;
这将映射到 VARCHAR(64)
请参阅 https://www.doctrine-project.org/projects/doctrine-dbal/en/2.10/reference/types.html#string 以获取更多参考。
我用固定长度的短文本属性描述了我的实体。当我使用命令 make:migration
时,它会生成数据类型为 TINYTEXT
的 SQL 代码。在我的例子中,使用 VARCHAR
会更准确,因为我的属性具有较短的固定长度。
我搜索过,但没有找到令人满意的解决方案。
我想指示 Doctrine 将 VARCHAR 用于此文本。可能吗?怎么样?
如果我不能:我在生成的 php 迁移代码中看到它建议让我自己在生成的 SQL 上进行编辑。我可以在这里把TINYTEXT
改成VARCHAR
吗?学说会在未来的修改中考虑到它吗?
<?php
...
/**
* @ORM\Entity(repositoryClass=UserRepository::class)
*/
class User
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="text", length=64, unique = true)
*/
private $mail;
/**
* @ORM\Column(type="text", length=64)
*/
private $hash;
/**
* @ORM\Column(type="text", length=32)
*/
private $salt;
...
}
MySQL
CREATE TABLE user (
id INT AUTO_INCREMENT NOT NULL,
mail TINYTEXT NOT NULL,
hash TINYTEXT NOT NULL,
salt TINYTEXT NOT NULL,
UNIQUE INDEX UNIQ_8D93D6495126AC48 (mail), PRIMARY KEY(id)
) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB
学说将 type="text", length=64
映射到 mysql 的 TINYTEXT
。
您正在查找字符串类型。
/**
* @ORM\Column(type="string", length=64, unique=true)
*/
private $mail;
这将映射到 VARCHAR(64)
请参阅 https://www.doctrine-project.org/projects/doctrine-dbal/en/2.10/reference/types.html#string 以获取更多参考。