感谢阅读,
我正面临一个我似乎无法解决的问题。我希望人们可以指出我正确的方向。
我正在查询我的数据网格的一些结果:
$datagrid = new Datagrid();
$datasource = new DoctrineSource(
$entityManager->getRepository('PricelistBundle:PricelistMaterial')
);
$datasource->getQueryBuilder()->addSelect('pg');
$datasource->getQueryBuilder()->leftJoin('t.pricelistmaterialprice', 'pg');
$datasource->getQueryBuilder()->leftJoin('t.material', 'g');
$datasource->getQueryBuilder()->andWhere('pg.year <= :year');
$datasource->getQueryBuilder()->andWhere('pg.week <= :week');
$datasource->getQueryBuilder()->andWhere('t.pricelist = :pricelist');
$datasource->getQueryBuilder()->setParameters(['year' => $year, 'week' => $week, 'pricelist' => $pricelist]);
$datagrid->setDatasource($datasource);
现在我得到的结果是周=周和年=年。但重点是,当所选周数比已知周数更大时,我的结果为空。
我想要的是结果仍会显示,但只有价格为0。 这意味着:如果pg.year&lt; =:year,否则pg为null,这样我就可以保留其他表格的结果。
有人能指出我正确的方向吗?
答案 0 :(得分:1)
这应该可以正常运行,因为您希望左连接到:
$datasource->getQueryBuilder()->leftJoin('t.pricelistmaterialprice', 'pg', 'WITH', 'pg.year <= :year AND pg.week <= :week');