【问题标题】:Doctrine; if - else null教义;如果 - 否则为空
【发布时间】:2015-04-13 12:48:23
【问题描述】:

感谢阅读,

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

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

    $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

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

【问题讨论】:

    标签: php sql symfony doctrine-orm


    【解决方案1】:

    这应该像你期望的那样工作:

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

    docs on leftJoin

    【讨论】:

    • 谢谢,还没有考虑过这种方式。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 2019-11-25
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    相关资源
    最近更新 更多