使用doctrine2在symfony2中加入两个实体

时间:2012-10-14 09:55:50

标签: symfony doctrine-orm dql

有两个实体。 票证设备

设备orm 中有

<one-to-many target-entity="Ticket" mapped-by="Device" field="ticket"/>
<many-to-one field="category" target-entity="Category"/>
故障单

<many-to-one field="device"  target-entity="Device"/>

我想实现一个过滤器,用户可以按设备的类别过滤故障单。我怎样才能做到这一点?我试过

$qb->select(array('t', 'd'))
        ->from('MyBundle:Ticket', 't')
        ->innerJoin('t.device', 'd')
        ->where("t.category.name = 'Cashbox'");;

但这给了我一个错误

[Syntax Error] line 0, col 88: Error: Expected =, <, <=, <>, >, >=, !=, got '.'

1 个答案:

答案 0 :(得分:1)

->where("t.category.name = 'Cashbox'");;

不正确。您必须加入类别表:

$qb
    ->select(array('t', 'd'))
    ->from('MyBundle:Ticket', 't')
    ->innerJoin('t.device', 'd')
    ->innerJoin('d.category', 'c')
    ->where("c.name = 'Cashbox'");