仅具有一个字段的Doctrine值对象

时间:2016-08-02 06:48:05

标签: doctrine-orm

目前我使用Doctrine2和value对象,它运行得很好。当我使用只有一个字段的值对象时的问题,例如:

$this->repository->findBy(array('email' => 'name@domain.com')); //This is not working
$this->repository->findBy(array('email.email' => 'name@domain.com')); //This is work great

问题是,如何制作$ this-> repository-> findBy(array('email'=>'name@domain.com'));工作

这是我的学说映射

User.orm.xml

<!-- User.orm.xml -->    
<?xml version="1.0" encoding="UTF-8" ?>
    <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
            http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"
                      xmlns:gedmo="http://gediminasm.org/schemas/orm/doctrine-extensions-mapping">

        <entity name="Domain\User\Entity\User" table="users" repository-class="Infrastructure\User\Repository\UserRepository">
            <id name="id" type="guid">
                <generator strategy="UUID"/>
            </id>
            <embedded name="email" class="Shared\ValueObject\Email" use-column-prefix="false" />
        </entity>
    </doctrine-mapping>

Email.orm.xml

<!-- Email.orm.xml -->
<?xml version="1.0" encoding="UTF-8" ?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
                          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                          xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping
                http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <embeddable name="Shared\ValueObject\Email">
        <field name="email" type="string" length="80" />
    </embeddable>
</doctrine-mapping>

感谢您的帮助,抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

不幸的是,根据code,这是不可能的。字段名称始终为

$property . "." . $fieldMapping['fieldName'];