@phpcoder81

Нужно ли разделять модель с выводом данных и поиском?

Есть модель клиенты (class Customer)

Методы управления: create(), update(), delete()
Методы вывода даных: getAll(), getSome(array()), getOne(id) (вывод всех записей, некоторых, одной. По ID).

Есть еще поиск getByName, getByRegion и др методы.

Вопрос 1. Основой. Нужно ли создать класс CustomerSearch. В нем городить всё что угодно, возвращая только массив ID, который потом передавать в главный класс Customer. Или лучше "бесконечно наполнять" класс Customer?

Вопрос 2. Появилось желание методы create(), update(), delete() вытащить в класс CustomerEdit или CustomerAdmin. стоит так делать?
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 3
dmitriylanets
@dmitriylanets
веб-разработчик
1. Да стоит, это похоже на repository
$searchCriteria = new CustomerSearchCriteria;
$searchCriteria->setByName("москва");
$customers = $customerRepository->findByCriteria($searchCriteria);//->CustomerCollection

2. Методы относятся к методам репозитория: $customerRepository->save($customer);//save это create и update в одном флаконе
Ответ написан
Cortess
@Cortess
Возможно имеет смысл создать контроллеры , которые отвечают за поиск и за вывод данных(Если это повысит читаемость и понятность кода). Как по мне лучше не делать много моделей если они работают с одной и той же сущностью
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
имхо хорошим стилем будет использование коллекций для множественного выбора. Что-то типа
$customers = new Collection(new Customer());
$customers->createCollectionByFields(array('somefield'=>'somevalue'));
$customersArray = $customers->getArray(); //return array of objects
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы