[英]innerJoin Query in Symfony2
我的mysql查询:
SELECT p.name, c.id
FROM customer c
INNER JOIN sales_order so ON so.customer_id=c.id
INNER JOIN sales_order_item soi ON so.id=soi.sales_order_id
INNER JOIN product p ON p.id=soi.product_id WHERE c.id=49454\G;
这在MySql中有效,但是当此查询在doctrine2中转换时,出现错误
"[Semantical Error] line 0, col 87 near 'so ON so.customer_id=c.id': Error: Identification Variable sales_order used in join path expression but was not defined before."
我用symfony的形式写这个:
$builder
->add('filter', 'entity', array(
'label' => 'Show',
'class' => 'RocketBraPrintBundle:SalesOrderItem',
'query_builder' => function($er) {
return $er->createQueryBuilder('p','so','c','soi')
->select('p.name','c.id')
->from('customer','c')
->innerJoin('sales_order','so','ON','so.customer_id=c.id')
->innerJoin('sales_order_item','soi','ON','so.id=soi.sales_order_id')
->innerJoin('product','p', 'ON', 'p.id=soi.product_id')
->where('c.id=49454\G');
},
'empty_value' => 'All',
'required' => false
))
谁能告诉我以symfony2方式转换此mysql查询的正确方法是什么?
->innerJoin('c.sales_order')
其中“ sales_order”是“客户”实体的确切关系名称。
这对我来说很复杂,因为我有点困惑,它的转换是这样的。
$er->createQueryBuilder('soi')
->select('soi','p','so')
->innerJoin('soi.salesOrder', 'so')
->innerJoin('soi.product', 'p')
->innerJoin('so.customer', 'c')
->groupBy('p.name')
->orderBy('p.name', 'ASC')
->where('so.customer = ' . $options['data']['customerid']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.