Добрый день. Есть стандартная Entity, описывающая Организацию
class Organization {
public function __construct(Name $name, Address $address, Phone $phone)
{
$this->name = $name
...
}
}
Name, Address и прочее - это ValueObject, в которых я валидирую пришедшие данные
Assert:notEmpty($country);
Assert:notEmpty($city);
Assert:notEmpty($street)
Так и сохраняю
"Россия", "Москва", "Солнечная ул", "15", "115033"
Но теперь возникло новое правило, что нужно сделать поиск организаций по городу, причем это именно нужный поиск.
(Да, конечно, такие вещи надо обговаривать заранее)
Что делать в этом случае?
Сделать отдельно сущность City и в предыдущий вариант сохранять
"Россия", "CityID", "Солнечная ул", "15", "115033"
?
Или оставить как есть и делать поиск по тексту "Москва" в базе потом? В этом случае мне нужно как то по занесению города валидировать его на присутствие в каком-нибудь "списке городов России"? Это я смогу сделать в инфраструктурном слое, конечно, но как то не будет ли это совсем неправильно?