PHP Hydrator \ ClassMethodsHydrator下划线替换为camelCase导致错误

时间:2015-12-02 17:48:58

标签: php doctrine-orm

我使用的是教义2,我的实体的变量设置如下:

     /**
     * @ORM\Column(type="string")
     */
    protected $phone_number;

    /**
     * @ORM\Column(type="string")
     */
    protected $e_mail;

现在我想用Hydrator从数组填充这个变量,如下所示:

public function fromArray($values)
    {
        $hydrator = new \Hydrator\ClassMethodsHydrator();
        $hydrator->hydrate($values, $this);
    } 

但是在使用此功能后我得到错误,因为Hydrator试图调用 setphoneNumber()而不是 setPhone_number() ......

你能帮助我如何实现我的目标,而不是将下划线改为camelCase吗?

谢谢

1 个答案:

答案 0 :(得分:1)

尝试:

 /**
 * @ORM\Column(type="string", name="phone_number")
 */
protected $phoneNumber;

在创建数据库架构时,Doctrine会将phoneNumber重命名为phone_number,但是通过使用\ Column或\ Table Definition中的name属性,您可以确保使用您的名称。

所以在数据库表格列中它是:phone_number

您的实体属性被称为:phoneNumber

所以这通常会在你的 setters setPhoneNumber 中结束,这很好。