2015-06-26 2 views
0

У меня есть объект Developers и таблицу с именем CodeUserReferenceSymfony найти поле

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)) 
    ....... 

Я получаю Id в code_user_reference , тогда я нахожу объекты разработчиков с этим идентификатором, затем создаю QueryBuilder и в этом QueryBuilder я нахожу объекты-разработчики снова, для таблицы JSON. Я нахожу это очень тяжелым, кто знает, что проще практиковать?

ответ

0

Существует достоверное несоответствие.

если у вас есть @ORM \ ManyToOne с одного сайта, должно быть @ORM \ OneToMany от другого.

Или, если вам нужны отношения «многие ко многим», на обоих объектах должно быть @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") 

и на другой стороне должен быть mappedBy вместо inversedBy

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

И как найти пользователя по Codereference '$ code_user_reference = $ em-getRepository ('ArtelCustomerBundle: CodeUserReference') - findOneByCodereference ($ request-> query-> get ('reference')); $ id = $ code_user_reference-> getAlluser() -> getId(); $ user_by_reference = $ em-getRepository ('ArtelCustomerBundle: Developers') -> findOneById ($ id); ' , потому что этот пример не соответствует Ithink –

Смежные вопросы