CakePHP:在单个页面中检索和组合多个模型数据

时间:2011-12-14 14:46:55

标签: cakephp cakephp-2.0 cakephp-appmodel

这是一个非常普遍的Cakephp问题。我正在尝试将来自许多不同模型的模型数据组合到给定页面中。

我正在为我老板的在线简历构建一个简单的内容管理器,这样他就可以通过一个简单的GUI来管理它。所以我有CV的所有不同部分的模型,但需要在单个页面上或通过单个控制器方法组合每个模型的数据。

我的直觉是我要么为'cv'构建一个模型(尽管只会有一个)并将相应的hasMany / belongsTo关联分别构建到'cv'和内容模型中,否则构建一个能够单独向模型控制器发出请求的静态页面。考虑到项目的规模有多小,前者似乎不必要地工作密集,但在后一种情况下,我不知道如何向控制器发出请求以向页面提供模型数据。我确定这很简单,我只是找不到答案!谢谢!

1 个答案:

答案 0 :(得分:2)

您可以创建DashboardsController(或任何您想要调用它),然后在Dashboard模型中指定您不需要数据库表:var $useTable = false;

在Config / routes.php文件中,添加:Router::connect('/', array('controller' => 'dashboards', 'action' => 'index'));以使其成为您的主页(如果您愿意)。

然后,在Dashboard控制器的索引操作中,您可以使用$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