gpt4 book ai didi

php - 如何在doctrine2实体中禁用字符串最大长度的隐式字符串修剪?

转载 作者:行者123 更新时间:2023-11-29 12:01:24 25 4
gpt4 key购买 nike

使用 dontrine2,我有一个具有以下注释的属性的实体:

/**
* @var string
* @Column(type="string", length=4, nullable=false)
*/
protected $someProperty;

现在,当属性设置为 foobar 时,字符串不会出现异常,而是被修剪为前四个字符,即 foob,然后将其存储到数据库中.

我知道我可以在 setter 中实现长度检查。然而,我会在两个我宁愿避免的地方配置字符串的长度。

我也可以使用验证,但这也会使配置加倍。

令我感到困惑的是,doctrine2 会隐式缩短字符串,但是当 nullable 为 false 时将值设置为 null 时,我会收到异常。这看起来不一致。

我可以禁用修剪并强制异常(exception)吗?或者我必须自己验证该实体吗?

最佳答案

Doctrine 不进行任何验证,也不进行任何字符串截断。您得到的所有异常都来自数据库层。

当您尝试将空值插入不允许为空的列时,数据库查询会失败。

当您尝试插入比列定义中定义的长度长的字符串值时,MySql 会自动截断它。您可以更改此行为,将 MySql 配置为使用 STRICT 模式。

关于php - 如何在doctrine2实体中禁用字符串最大长度的隐式字符串修剪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32307369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com