symfony - doctrine的用foreach使用orWhere
怪我咯
怪我咯 2017-05-16 16:44:51
[PHP讨论组]
//我有一个数组
$arr = array('bu_1' => 'pid_1', 'bu_2' => 'pid_2', ... , 'bu_n' => 'pid_n');

//我想用这个数组匹配数据库的字段, 并取得结果集.

        $iof_qb = $em->createQueryBuilder();
        $iof_qb->select('iof')
                ->from('AlbatrossAceBundle:Attachinfo', 'iof')
                ->leftJoin('iof.bu', 'b')
                ->leftJoin('iof.project', 'p')
                ->where('iof.children = 0');
        foreach( $arr as $key => $val ) {
            $iof_qb->orWhere('b.number = :key AND p.id = :val');
        }
//不知道该怎么写下去了. 
//想到的办法有, 创建一个数组, 保存setParameters 里的数组. 可orWhere 里又不知道怎么写
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
PHPz

DQL里的参数名是不能重复的,所以你可以自己维护一个序列号,对应“第N个键/值对”:

$seq = 1;
foreach ($arr as $key => $val) {
    $qb->orWhere(sprintf('b.number=:key_%d AND p.id=:val_%d', $seq, $seq))
        ->setParameter('key_' . $seq, $key)
        ->setParameter('val_' . $seq, $val);

    $seq++;
}

没有实测,只要你标记好什么值对应什么参数就行。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号