mysql - Symfony 2/Doctrine 不在 varchar 字段中保存任何零

标签 mysql symfony doctrine-orm doctrine

更新

按照要求,

$NewUser = new Users();
$Form = $this->createForm(new UserType(), $NewUser, [])
              ->add('save', 'submit', ['label' => 'Save',
                                       'attr' => ['class' => 'SaveButton ftLeft'],
                                      ]);
$Form->handleRequest($request);

if ($Form->isValid()) {
   /*
      Sometimes add more data to the entity.....
   */
   $em = $this->getDoctrine()->getManager();
   $em->persist( $NewUser );
   $em->flush();
}

$FormRender = $Form->createView();
return $this->render('xxxxBundle:Users/add.html.twig',
                                    ['AddUser' => $FormRender]);
有时我会在 php 代码中设置的字段上向实体添加额外的内容,例如帐户注册日期,但在大多数情况下只需使用表单数据保存实体。

<小时/>

非常简单的问题,我有一个新的(ish)系统,并注意到当尝试保存零时,对于任何东西,电话号码输入,它不会保存任何零?

我正在使用 YMAL 文件来控制我的 Doctrine ORM,这是我在用户表中设置它的方式,

    mobileNumber:
        type: string
        nullable: false
        length: 50
        options:
            fixed: false
        column: mobile_number

这确实保存/使该字段具有 varchar,并且没有想到它,直到我进行了随机测试并发现它没有保存任何前导零?

我知道你不能在 int 字段类型中保存前导零,但这是一个 varchar。另外,当我进入数据库并手动向该输入添加零时,这很好,所以我采用它而不是数据库。与我如何获取保存数据的 Doctrine 有关吗?

如果是这样我该如何改变?我刚刚使用标准 persist() 和lush() 命令保存数据?不知道为什么它不保存零?我在想我必须将 YMAL 类型更改为电话之类的类型?我已经浏览了文档,看不到它。

欢迎所有帮助..

谢谢。

最佳答案

原因在您的评论中:

User form type has the mobile number set to 'number' input.

Form 组件正在将该值转换为 int。将字段类型更改为常规字符串。

如果您想验证值仅为数字,请使用 Validation component

关于mysql - Symfony 2/Doctrine 不在 varchar 字段中保存任何零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36456148/

相关文章:

mysql - 在 SQL 中,可以在 INSERT 语句的 VALUES 子句中嵌套 SELECT 语句吗?

mysql - 带有查询墙消息顺序的 pbm

symfony - 同 bundle 不同路线

forms - Symfony2 表单 - 日期字段验证不起作用

php - 类 Doctrine\ORM\PersistentCollection 的对象无法转换为字符串

php - 教义不进行更新

MySQL:TIMESTAMP 的默认值无效

php - 有没有办法创建 Doctrine 2 实体管理器的模拟并在 Symfony 2 PHPUnit 测试中为其提供模拟实体?

php - Symfony 配置 : Doctrine InvalidConfigurationException: Unrecognized option "options" under "doctrine.dbal"

python - 如何从单个 Flask 路由执行两个 SQL 命令