根据Symfony在MySQL数据库上创建longtext字段的需求,需要更新模式(schema)。

10
我希望使用Doctrine模式将MySQL字段从文本更新为长文本。

现在我的代码如下:

/**
 *@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”命令时,它会显示“Nothing to update - your database is already in sync with the current entity metadata.”。如何将此字段更改为MySQL数据库中的longtext。
我在项目的不同部分执行相同的操作。 以下是代码:
/**
 * @ORM\Column(name="body", type="text", nullable=true)
 */
protected $body;

在终端上执行“php app/console doctrine:schema:update --force”命令后,该字段在MySQL数据库中被更改为longtext。

2个回答

14

1
缺少引用。在存储库中,您可以引用此处的文本类型: https://github.com/doctrine/dbal/blob/7f79d0490d3171c98cbe02050b3ce183d27ada3e/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php#L245因此,列定义变为: @ORM\Column(name="<name>", type="text", nullable=true)根本没有长度(因为LONGTEXT是“text”列类型的默认值) - Rob K
3
这个链接有效。使用文本: https://www.doctrine-project.org/projects/doctrine-dbal/en/2.9/reference/types.html#text - Guillaume Harari
指定长度对我来说完美地起作用了。 - undefined

0

对于使用Doctrine实体字段(带验证)声明的MySql DB上的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标记字符),您可以创建附件类并通过关系链接多对一,将大型内容分散到单独的段落中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接