我有一个传递给存储库方法的LibPhoneNumber对象$phone。在我的存储库方法中,我有:
return $this->getEntityManager()
->createQuery(
'SELECT p, m FROM AppBundle:Phone p JOIN p.member m WHERE p.phoneNumber = :phone AND m.allowFind = TRUE'
)
->setParameter("phone", $phone)
->getOneOrNullResult();问题在于生成并运行的查询按字面意思插入“Object(libphonenumber\PhoneNumber)”
WHERE p0_.phone_number = 'Object(libphonenumber\\PhoneNumber)' AND m1_.allow_find = 1如果我使用默认的存储库方法findOneByPhoneNumber($phone),它会正确地将电话号码转换为存储在数据库+14565551212中的格式
发布于 2016-02-27 23:47:38
所以我想我想通了..。由于某种原因,看起来我需要手动进行转换,而内置的findOneByxxxxx()方法则自动执行某种方式。也许有人可以对此发表评论?
无论哪种方式,我都是通过执行以下操作手动进行转换的:
$phoneNumberUtil = PhoneNumberUtil::getInstance();
$number = $phoneNumberUtil->format($phone, \libphonenumber\PhoneNumberFormat::E164);然后将$number传递给setParameter("phone". $number)方法,而不是作为对象的$phone。
https://stackoverflow.com/questions/35669493
复制相似问题