@CoolerMan

Реализация MVC Yii (связи моделей, каскадное удаление)?

Реализация MVC подразумевает обработку только одной выбранной записи?

Подход в Yii меня не очень радует AR, чтобы удалить запись ее сначала надо вызвать, а потом уже что то с ней сделать.

Relations правила Yii это тоже странная связь моделей, где по одной записи я не могу связать join, мне надо будет выполнить 150 MVC связей(образно).

Сама идея MVC меня привлекла разделением логики и представления информации, в данной ситуации мне не нужен велосипед, хотел бы получить возможность решения данных вопросов:
1) как реализовать удаление, вызов и обработку массива данных, а не зацикливать на повторении с каждой записью;
2) так же как связать данные из разных таблиц.

Мысль вынести это в отдельную модель(Service Layer), в которой можно собрать обработку большого количества записей и сразу в ней же реализовать связь между таблицами, возможно наборами join и прочего.
  • Вопрос задан
  • 3651 просмотр
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Судя по вашему вопросу, вы неправильно трактуете идею MVC либо же путаете MVC и ORM.

MVC ничего не регламентирует по поводу того, как вам работать с данными. Этот паттерн подразумевает лишь разделение вашей бизнес-логики (данные и обработка оных) и представления посредством промежуточного слоя контроллеров.

То как хранятся данные слабо относится к бизнес-логике, это обычно выносится в сервисный слой. И тот же yii не ограничивает вас в чем-быто нибыло. Вы можете не использовать ar вообще, можете заменить на data mapper (с использованием doctrine). Скажем ваши данные вообще ничего не должны знать о том как они хранятся, об этом даже контроллеры не особо то должны быть вкурсе. Обычно для этого вводят промежуточный слой работающий с данными и инкапсулирующий всю логику по сохренению/удалению записей. Это уменьшает связанность системы и удешевляет дальнейшую поддержку приложений.

p.s. Почитайте про DDD, принцыпы S.O.L.I.D.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@CoolerMan Автор вопроса
Короче как я понял у нас есть для работы с одной таблицей:
delete All
update All
Save
Insert
Find all

Возможна жадная загрузка из relations
With

Остальные методы
Массового insert, delete, update мы используем CDbCriteria
Ответ написан
Комментировать
p4s8x
@p4s8x
Удаление связанных данных отлично решается - используя CASCADE в БД.
Для массовых удалений\апдейтов есть UpdateAll DeleteAll и подобные методы AR.
Ответ написан
Комментировать
@CoolerMan Автор вопроса
Подразумевается обновление, удаление в разных таблицах.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы