教义; if - else null

时间:2015-04-13 12:48:24

标签: php sql symfony doctrine-orm

感谢阅读,

我正面临一个我似乎无法解决的问题。我希望人们可以指出我正确的方向。

我正在查询我的数据网格的一些结果:

    $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,这样我就可以保留其他表格的结果。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

这应该可以正常运行,因为您希望左连接到:

$datasource->getQueryBuilder()->leftJoin('t.pricelistmaterialprice', 'pg', 'WITH', 'pg.year <= :year AND pg.week <= :week');

请参阅docs on leftJoin

相关问题