2016-02-27 33 views
0

我有一个LibPhoneNumber对象$phone我传递给一个存储库方法。在我的仓库方法,我有:使用LibPhoneNumber的DQL

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(); 

的问题是,正在产生,如果我使用默认的库法的字面运行插入“对象(libphonenumber \ ******中国)”

WHERE p0_.phone_number = 'Object(libphonenumber\\PhoneNumber)' AND m1_.allow_find = 1 

查询findOneByPhoneNumber($phone)它正确地将电话号码转换成它存储在数据库中的格式+14565551212

回答

0

所以我认为我想通了......看起来像某些原因,我需要手动进行转换,而出于某种原因内置的findOneByxxxxx()方法会自动执行一些操作。也许有人可以对此发表评论?

无论哪种方式,我手动进行转换通过执行:

$phoneNumberUtil = PhoneNumberUtil::getInstance(); 
    $number = $phoneNumberUtil->format($phone, \libphonenumber\PhoneNumberFormat::E164); 

,然后使$numbersetParameter("phone". $number)方法而不是$phone这是该对象。