2011-12-14 1 views
0

Это очень общий вопрос о CakePHP. Я пытаюсь объединить данные модели из разных моделей в данную страницу.CakePHP: получение и объединение нескольких данных модели на одной странице

Я строю простой контент-менеджер для онлайн-резюме моего босса, чтобы он мог управлять им из простого графического интерфейса. Поэтому у меня есть модели для всех разделов CV, но вам нужно объединить данные из каждой модели на одной странице или с помощью одного метода контроллера.

Моя интуиция заключается в том, что я либо должен построить модель для 'cv' (хотя там будет только когда-либо), и построить соответствующие hasMany/belongsTo ассоциации в 'cv' и модели контента соответственно, или иначе создать статическую страницу, способную выполнять запросы диспетчеров модели по отдельности. Первое кажется излишне трудоемким с учетом того, насколько мал проект, но в последнем случае я не знаю, как заставить запросы контроллеров предоставлять данные модели на страницу. Я уверен, что это мертво просто, я просто не могу найти ответ! Благодаря!

+0

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

+0

Re: 'swatting a fly with the Buick' lololol Да, правильно. Но он старый, и особенно, и стул отдела, и это самый простой способ для меня построить что-то, что луддит может использовать и никогда не испортить! – Jonline

ответ

2

Вы можете сделать DashboardsController (или что вы хотите назвать это), то в модели Dashboard, вы указали, что вам не нужна таблица базы данных: var $useTable = false;

В/routes.php файл Config , добавьте: Router::connect('/', array('controller' => 'dashboards', 'action' => 'index'));, чтобы сделать свою домашнюю страницу (если хотите).

Затем в указательном указателе контроллера панели управления вы можете использовать $this->loadModel('Whatever');, и вы можете перейти к получению данных с этой модели: $myData = $this->Whatever->find('all');. Вы можете загрузить столько моделей, сколько потребуется для данных.

TLDR/упрощена:

1) Make Dashboard controller with 'index' action 
2) Make Dashboard model and specify: var $useTable = false; 
3) Set Route to use your Dashboard controller for homepage (or any other page: 
    `Router::connect('/', array('controller' => 'dashboards', 'action' => 'index'));` 
4) Use $this->loadModel('Whatever'); to gain access to that model's methods 
+0

Я обновил свой вопрос, чтобы отразить прогресс, достигнутый в вашем совете, спасибо! – Jonline

+0

Царапина, который последний. У меня просто была проблема с синтаксисом; API получил меня через это. Этот ответ был отличным - большое спасибо. – Jonline