在DQL中使用数组参数

时间:2014-06-27 02:06:09

标签: php doctrine-orm doctrine dql

我基本上尝试执行dql,如下所示:

$queryString = "SELECT ac FROM CloudExchange\Entities\Account ac JOIN ac.account_connections cn WHERE cn.account IN (:accounts)";
$query = $em->createQuery($queryString);
$query->setParameter('accounts', $service->getAccounts());
$results = $query->getResult();

我使用的是doctrine 2.3.x版本。似乎上述方法不起作用。它返回以下错误:

PHP Catchable fatal error:  Object of class Doctrine\ORM\PersistentCollection could not be converted to string in......

任何人都可以知道我的方法可能出现什么问题,或者有什么其他更好的方式来实现" WHERE IN"基于条件的DQL好吗?感谢。

1 个答案:

答案 0 :(得分:1)

好的,回答我自己的问题,这是正确的方法:

$queryString = "SELECT ac FROM CloudExchange\Entities\Account ac JOIN ac.account_connections cn WHERE cn.account IN (:accounts)";
$query = $em->createQuery($queryString);
$query->setParameter('accounts', $service->getAccounts()->toArray());
$results = $query->getResult();

所以,基本上我需要使用" $ service-> getAccounts() - > toArray()",直接在DQL中支持收集。