nepada/phone-number-doctrine

Doctrine 的电话号码类型。

v2.3.0 2024-04-06 10:31 UTC

README

Build Status Coverage Status Downloads this Month Latest stable

安装

通过 Composer

$ composer require nepada/phone-number-doctrine

在 bootstrap 中注册类型

\Doctrine\DBAL\Types\Type::addType(
    \Brick\PhoneNumber\PhoneNumber::class,
    \Nepada\PhoneNumberDoctrine\PhoneNumberType::class
);

在 Nette 中,通过 nettrine/dbal 集成,你可以在配置中注册类型

dbal:
    connection:
        types:
            Brick\PhoneNumber\PhoneNumber: Nepada\PhoneNumberDoctrine\PhoneNumberType

用法

PhoneNumberType 将数据库值映射到电话号码值对象(详情请见 brick/phonenumber)并反向映射。电话号码以 E164 格式存储,即以 '+' 符号开始,后跟一系列数字,包括国家代码和国内号码。

实体中的示例用法

use Doctrine\ORM\Mapping\Column;
use Doctrine\ORM\Mapping\Entity;
use Brick\PhoneNumber\PhoneNumber;

#[Entity]
class Contact
{

    #[Column(type: PhoneNumber::class, nullable: false)]
    private PhoneNumber $phoneNumber;

    public function getPhoneNumber(): PhoneNumber
    {
        return $this->phoneNumber;
    }

}

查询构建器中的示例用法

$result = $repository->createQueryBuilder('foo')
    ->select('foo')
    ->where('foo.phoneNumber = :phoneNumber')
     // the parameter value is automatically normalized to +420123456789
    ->setParameter('phoneNumber', '+420 123 456 789', \Brick\PhoneNumber\PhoneNumber::class)
    ->getQuery()
    ->getResult();