Symfony查找字段


Symfony find field

我有一个名为CodeUserReference 的Developers实体和表

class CodeUserReference
{
/**
 * @var integer
 *
 * @ORM'Column(name="id", type="integer")
 * @ORM'Id
 * @ORM'GeneratedValue(strategy="AUTO")
 */
protected $id;
/**
 *@ORM'ManyToOne(targetEntity="Artel'CustomerBundle'Entity'Developers", inversedBy="newreference")
 */
protected $alluser;
/**
 * @ORM'Column(type="string", length=255)
 */
protected $codereference;

和开发者

class Developers extends SUser
{
/**
 * @var string
 *
 * @ORM'Column(name="email", type="string", length=255,  unique=false, nullable=false)
 * @Assert'Length(min=3, max=255)
 * @Assert'NotBlank
 */
protected $email;
 /**
 * @ORM'ManyToMany(targetEntity="Artel'CustomerBundle'Entity'CodeUserReference", inversedBy="alluser")
 */
protected $newreference;

我的行动中有查询

public function profileGetAction(Request $request)
{
    $em = $this->getDoctrine()->getManager();
    $code_user_reference = $em->getRepository('ArtelCustomerBundle:CodeUserReference')->findOneByCodereference($request->query->get('reference'));
    $user_by_email = $em->getRepository('ArtelCustomerBundle:Developers')->findOneByEmail($request->query->get('email'));
    if (!empty($code_user_reference) && empty($user_by_email))
    {
        $id = $code_user_reference->getAlluser()->getId();
        $user_by_reference = $em->getRepository('ArtelCustomerBundle:Developers')->findOneById($id);
        $user_by_reference_json = $em->getRepository('ArtelCustomerBundle:Developers')->createQueryBuilder('d')
            ->where('d.id= :id')
            ->groupBy('d.id')
            ->setParameter('id', $code_user_reference->getAlluser()->getId())
            ->getQuery()->getArrayResult();
        echo json_encode( array('user' => $user_by_reference_json));
        die;
    }
    If(empty($code_user_reference) && !empty($user_by_email))
     .......

我在code_user_reference中获取Id,然后找到具有此Id的Developers对象,然后创建一个QueryBuilder,在这个QueryBuilder中,我再次找到JSON表的Developers对象。我觉得这很难,谁知道更简单的做法呢?

存在一定的映射错误。

如果你有来自一个站点的@ORM''ManyToOne,那么应该有来自另一个的@ORM''AneToMany。

或者,如果您需要多对多关系,那么两个实体上都应该有@ORM''ManyToMany。

此外,关系应该映射在一侧。如果你有(targetEntity="Artel'CustomerBundle'Entity'Developers", inversedBy="newreference"),这意味着它应该映射到这里

类似的东西

@ORM'ManyToOne(targetEntity="Artel'CustomerBundle'Entity'Developers", inversedBy="newreference")
@ORM'JoinColumn(name="id_developer", referencedColumnName="id")

并且在另一侧必须是CCD_ 2而不是CCD_ 3

* @ORM'OneToMany(targetEntity="Artel'CustomerBundle'Entity'CodeUserReference", mappedBy="alluser")