我有一个名为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")