Нужно ли разделять модель с выводом данных и поиском?
1. Да стоит, это похоже на repository$searchCriteria = new CustomerSearchCriteria;
$searchCriteria->setByName("москва");
$customers = $customerRepository->findByCriteria($searchCriteria);//->CustomerCollection
2. Методы относятся к методам репозитория: $customerRepository->save($customer);//save это create и update в одном флаконе
Возможно имеет смысл создать контроллеры , которые отвечают за поиск и за вывод данных(Если это повысит читаемость и понятность кода). Как по мне лучше не делать много моделей если они работают с одной и той же сущностью