我正在制作一个有许多不同类别的站点,每个类别都有自己的控制器/模型/视图。
示例网站类别:餐饮、电影、夜生活、Sports...etc
我的控制器:餐厅、影院、活动、文章、城市、用户……还有更多
我也有一个网站主页,从他们所有的数据,以填充在页面上的小方框。而且,每个类别都有自己的主页,也可以从不同的类别中提取数据-例如,在“电影”主页上,它还可以从影院附近的餐馆和体育赛事中提取数据,也许还可以从文章模型中提取一些最近的文章……等等--有很多类别重叠。
我该如何设置?体育赛事与电影没有任何联系,所以我无法想象任何hasMany/belongsTo类型的关系--但我仍然需要访问数据。尤其是在主页上,实际上根本没有表格,但需要从上面的所有内容中提取数据。
发布于 2011-04-20 02:16:48
你的问题太大了,不能完全覆盖。我将解决跨不同控制器访问多个模型的问题。这可以通过几种方式来完成。
按关系:
$this->Event->City->find(); // relationship to City exists in Event Model通过将其添加到控制器中的$uses属性:
var $uses = ('City');根据需要加载到方法中:
function some_method() {
App::import('Model', 'City');
$this->City->find();每种方法都有自己的好处。您应该阅读有关Models in the CakePHP Book的更多信息。如果你有大量的关系,你应该查看LazyModel来延迟加载你的模型。
发布于 2011-04-20 02:21:54
听起来您需要实现components来处理各种类别。该组件将为任何给定页面(与类别主页不同)提供对类别框的访问。
然后,我将实现一个名为'category‘的元素,您可以将信息从组件传递到该元素。我还会让所有组件导出类似的数据。这将保持它的简单性,但仍然提供您想要的灵活性。
总之,为每个类别创建组件:
将输出传递给要在页面上显示的类别元素。
发布于 2011-04-20 02:21:54
乍一看,你可能没有看到另一个模型,但是你把它们称为“类别”的想法意味着它们必须是某种东西的类别,可能是活动。新的模型可能非常单薄,但我可能会怀疑像外观安排这样的事情与活动模型有关,所以你可以给它一个开始和结束的发布日期。如果你不想把它叫做“活动”,也许像"contentItem“这样的泛型可以给你提供一个控制全局属性的地方。另一个练习是比较您现有的模型并寻找重复的属性。这些重复的属性描述的是什么?
https://stackoverflow.com/questions/5720727
复制相似问题