在symfony中更新MySQL数据库上的create longtext字段的模式

时间:2014-04-08 12:17:27

标签: php mysql symfony doctrine-orm doctrine

我想使用Doctrine架构将MySQL字段从文本更新为longtext。

现在我的代码是这样的:

/**
 *@var string
 *@ORM\Column(name="head_fa", type="string", length=1000, nullable=true)
 */
private $head_fa;

/**
 *@var string
 *@ORM\Column(name="head_en", type="string", length=1000, nullable=true)
 */
private $head_en;

/**
 *@var string
 *@ORM\Column(name="body_fa", type="text", length=1000, nullable=true)
 */
private $body_fa;

/**
 *@var string
 *@ORM\Column(name="body_en", type="text", length=1000, nullable=true)
 */
private $body_en;

问题是我将此字段更改为此代码

/**
 *@var string
 *@ORM\Column(name="head_fa", type="string", length=1000, nullable=true)
 */
private $head_fa;

/**
 *@var string
 *@ORM\Column(name="head_en", type="string", length=1000, nullable=true)
 */
private $head_en;

/**
 *@var string
 *@ORM\Column(name="body_fa", type="text", nullable=true)
 */
private $body_fa;

/**
 *@var string
 *@ORM\Column(name="body_en", type="text", nullable=true)
 */
private $body_en;

并运行" php app / console doctrine:schema:update --force"在控制台上命令它说"无需更新 - 您的数据库已经与当前实体元数据同步。"如何在mysql数据库上将此字段更改为longtext。

我在项目的不同部分做同样的事情。 这是代码

/**
 * @ORM\Column(name="body", type="text", nullable=true)
 */
protected $body;

并执行" php app / console doctrine:schema:update --force"终端上的命令此字段在MySQL数据库上更改为longtext。

2 个答案:

答案 0 :(得分:8)

我遇到了同样的问题。我在引用此页面后找到了一个解决方案: http://doctrine-dbal.readthedocs.org/en/latest/reference/types.html

指定文本字段的长度将具有在MySQL中创建的正确类型。例如:length = 65535

见这里:http://doctrine-dbal.readthedocs.org/en/latest/reference/types.html#id100

256到65535之间的长度,使用" text"数据库中的字段。

答案 1 :(得分:0)

对于MySql DB上具有Doctrine Entity字段(带有验证)的symfony 4.2声明有效

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;

您的班级名称

    /**
 * @var string
 * @ORM\Column(type="text", length=65535)
 * @Assert\NotBlank(message="your message")
 * @Assert\Length(
 *     max=65535,
 *     maxMessage="your message"
 * )
 */
protected $docContent;

如果您需要更多的文本空间(使用CKeditor作为文本输入,而不是仅文本,则需要更多的html标记字符),则可以创建附件类并通过多对多的链接进行链接,并将大内容散布到单独的段落中。