nepada / email-address-doctrine
Doctrine 的电子邮件地址类型。
v1.8.0
2024-04-06 09:14 UTC
Requires
- php: >=8.1.0 <8.4
- doctrine/dbal: ^3.0@dev || ^4.0@dev
- nepada/email-address: ^2.3@dev || ^3.0@dev
Requires (Dev)
- mockery/mockery: 1.6.11
- nepada/coding-standard: 7.14.0
- nepada/phpstan-nette-tester: 1.1.0
- nette/tester: 2.5.2
- php-parallel-lint/php-parallel-lint: 1.4.0
- phpstan/phpstan: 1.10.66
- phpstan/phpstan-mockery: 1.1.2
- phpstan/phpstan-nette: 1.2.9
- phpstan/phpstan-strict-rules: 1.5.2
- shipmonk/phpstan-rules: 2.11.3
- spaze/phpstan-disallowed-calls: 3.1.2
README
安装
通过 Composer
$ composer require nepada/email-address-doctrine
在 bootstrap 中注册类型
\Doctrine\DBAL\Types\Type::addType( \Nepada\EmailAddress\RfcEmailAddress::class, \Nepada\EmailAddressDoctrine\RfcEmailAddressType::class ); \Doctrine\DBAL\Types\Type::addType( \Nepada\EmailAddress\CaseInsensitiveEmailAddress::class, \Nepada\EmailAddressDoctrine\CaseInsensitiveEmailAddressType::class );
在 Nette 中,使用 nettrine/dbal 集成,您可以在配置中注册类型
dbal: connection: types: Nepada\EmailAddress\RfcEmailAddress: Nepada\EmailAddressDoctrine\RfcEmailAddressType Nepada\EmailAddress\CaseInsensitiveEmailAddress: Nepada\EmailAddressDoctrine\CaseInsensitiveEmailAddressType
使用方法
此包提供两种 Doctrine 类型
RfcEmailAddressType
用于存储由RfcEmailAddress
表示的电子邮件。CaseInsensitiveEmailAddressType
用于存储由CaseInsensitiveEmailAddress
表示的电子邮件。
这两种类型在存储到数据库之前都会对电子邮件地址的域名部分进行归一化,但它们在处理地址的本地部分方面有所不同。有关更多详细信息,请参阅 nepada/email-address。
实体中的示例用法
use Doctrine\ORM\Mapping\Column; use Doctrine\ORM\Mapping\Entity; use Nepada\EmailAddress\CaseInsensitiveEmailAddress; #[Entity] class Contact { #[Column(type: CaseInsensitiveEmailAddress::class, nullable: false)] private CaseInsensitiveEmailAddress $email; public function getEmailAddress(): CaseInsensitiveEmailAddress { return $this->emailAddress; } }
查询构建器中的示例用法
$result = $repository->createQueryBuilder('foo') ->select('foo') ->where('foo.email = :emailAddress') // the parameter value is automatically normalized to example@example.com ->setParameter('emailAddress', 'Example@Example.com', CaseInsensitiveEmailAddress::class) ->getQuery() ->getResult();