0

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

    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

4

1 回答 1

0

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

无论哪种方式,我都通过以下方式手动进行了转换:

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

然后传递$numbersetParameter("phone". $number)方法而不是$phone对象。

于 2016-02-27T15:47:38.083 回答