2012-05-11 3 views
3

Так что я в следующем примере таблицы (союза?):Запрашивание несколько моделей подобных данных в CakePHP

Table A: 
id 
name 
type 
hat_size 
created 

Table B: 
id 
name 
type 
favorite_food 
created 

Table C: 
id 
name 
type 
some_other_thing 
created 

Давайте предположим, что я хочу, чтобы создать поиск с результатами моделей A, B и C с использованием id, name, type, и created.

Моя цель состояла бы в поиске всех трех таблиц, упорядоченных по одному из полей (давайте использовать created как поле ORDER_BY), и, к сожалению, 20 результатов.

Обычно я просто делаю Союз из них, заказываю поле и LIMIT результат.

Теперь я знаю, что могу просто создать необработанный запрос, чтобы сделать это ... но это означает, что я должен переписать методы paginate, всегда дезинфицировать и т. Д. Кроме того, он неуклюж и не обязательно переносится через несколько баз данных SQL. Я бы предпочел сделать это более дружелюбным образом MVC, используя сами модели, если это возможно.

Каким образом я могу подойти к этому с помощью CakePHP?

Спасибо, Джеймс

+0

CakePHP Cant ручка UNIONs очень хорошо. но это возможно - http://stackoverflow.com/questions/3536107/union-syntax-in-cakephp – 472084

ответ

1

Одним из вариантов является создание VIEW, который держит UNION запрос. Затем выполните ваш запрос на торт в представлении.

Однако я начинаю избегать представлений в последнее время из-за сложности переноса их между серверами (и раздражающей команды DEFINER, которая обычно включается в экспорт).

+0

Если я не понимаю, разве это также не нарушает структуру MVC? Я бы очень хотел удержаться на MVC, или это просто глупо использовать MVC для начала. Мне интересно, просто ли это невозможно для MVC, чтобы выполнить это без грубого принуждения запроса и взлома части магии торта. – xtraorange

+0

Ну, вы создаете представление внутри базы данных, а затем просто используете представление в качестве своей модели. Я не думаю, что ломает MVC, но это слегка нерешительно ... –

Смежные вопросы