【发布时间】:2014-05-13 06:29:26
【问题描述】:
我有这个实体:
class TruckOrderPud {
/**
* @ORM\Id
* @ORM\OneToOne(targetEntity="Pud")
* @ORM\JoinColumn(name="pud_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $pudId;
/**
* @ORM\Id
* @ORM\OneToOne(targetEntity="TruckOrder")
* @ORM\JoinColumn(name="truck_order_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $truckOrderId;
/**
* @ORM\Column(name="package_count", type="integer", options={"unsigned"=true}, nullable=true)
*/
protected $packageCount;
/**
* @ORM\Column(name="package_weight", type="integer", options={"unsigned"=true}, nullable=true)
*/
protected $packageWeight;
}
我只需要通过truckOrderId 参数从该实体获取单个列pudId。
我试试:
$result = $this->_em->createQuery('SELECT top.pudId FROM AppTruckingBundle:TruckOrderPud top WHERE top.truckOrderId = ?1')
->setParameter(1, $truckOrderId)
->getSQL();`
然后我有错误:
"[Semantical Error] line 0, col 11 near 'pudId FROM AppTruckingBundle:TruckOrderPud': Error: Invalid PathExpression. Must be a StateFieldPathExpression."
如果我将查询从'SELECT top.pudId...' 更改为'SELECT top...',一切正常吗?
我也在尝试:
$qb = $this->_em->createQueryBuilder();
$qb->select('top.pudId')
->from('AppTruckingBundle:TruckOrderPud', 'top')
->where($qb->expr()->eq('top.truckOrderId', $truckOrderId));`
在这种情况下,我得到了相同的错误。如果我在$qb->select('top') 上更改$qb->select('top.pudId') 就可以了。
感谢您的帮助!
【问题讨论】:
标签: symfony doctrine-orm