我将我的申请表从doctrine1转换为doctrine2.4 我确实从数据库中自动映射,并且我错过了一些关系:
表:产品 产品,标题,价格
表:LocationProducts id,productid,loctionid,qty
所以每个LocationProducts行都有1个产品,每个产品可以在几个位置
在我获得的locationproducts类下的映射:
/**
* @var \Products
*
* @ORM\ManyToOne(targetEntity="Products")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="productid", referencedColumnName="productid")
* })
*/
private $productid;
在产品模型中我没有关系,我试图添加它但它失败了:它表示productid映射已经存在
这是我的目标查询:
$qb = $em->createQueryBuilder()
->select('p.productid,lp.qty AS totalqty')
->from('Products','p')
->innerJoin('p.LocationProducts','lp')
->setFirstResult( $offset )
->setMaxResults( $limit )
//getDQL
->getQuery();
并返回错误:
Class Products has no association named LocationProducts
我缺少什么? 感谢。
答案 0 :(得分:1)
您缺少map属性注释。
<?php
/**
* @OneToMany(targetEntity="Phonenumber", mappedBy="user", cascade={"persist", "remove", "merge"}, orphanRemoval=true)
*/
public $phonenumbers;
请参阅此链接中的mappedBy: - http://docs.doctrine-project.org/en/2.0.x/reference/annotations-reference.html#annref-onetomany
希望这有帮助。
干杯!
答案 1 :(得分:0)
错误消息表明没有关联,因此您需要添加它。目前您的关系是单向的,您不能加入p.LocationProducts
,因为它不存在。