【发布时间】:2011-07-24 18:17:12
【问题描述】:
我正在尝试在 CakePHP 应用程序中链接两个(以及更多)模型。
我有两个数据库表:clients 和 notes。我有以下模型类:
<?php
class Client extends AppModel {
var $name = 'Client';
var $hasMany = 'Note';
}
还有:
<?php
class Note extends AppModel {
var $name = 'Note';
var $belongsTo = 'Client';
}
但是,我认为它们没有关联。当我在控制器中运行 print_r($this->Client->find()); 时,我得到以下输出:
Array
(
[Client] => Array
(
[id] => 1
[name] => Martin Bean
)
)
如何获取每个Client 的关联Note 记录?
编辑:尽管在我的模型类中有上述内容,但如果我将以下内容放在控制器中:
$this->Client->Behaviors->attach('Containable');
print_r($this->Client->find('all', array('contain' => 'Note')));
我收到以下错误消息:
警告 (512):模型“Client”与模型“Note”没有关联 [CORE/cake/libs/model/behaviors/containable.php,第 363 行]
我是否遗漏了 CakePHP 食谱中未解释的内容?
编辑 2: 我不知道这是否有帮助;这是调试输出:
ContainableBehavior::containments() - CORE/cake/libs/model/behaviors/containable.php,第 363 行 ContainableBehavior::beforeFind() - CORE/cake/libs/model/behaviors/containable.php,第 121 行 ModelBehavior::dispatchMethod() - CORE/cake/libs/model/model_behavior.php,第 169 行 BehaviorCollection::trigger() - CORE/cake/libs/model/model_behavior.php,第 494 行 Model::find() - CORE/cake/libs/model/model.php,第 2108 行 PostsController::index() - APP/controllers/posts_controller.php,第 6 行 Dispatcher::_invoke() - CORE/cake/dispatcher.php,第 204 行 Dispatcher::dispatch() - CORE/cake/dispatcher.php,第 171 行 [main] - APP/webroot/index.php, 第 83 行
【问题讨论】:
-
尝试清除模型缓存
APP/tmp/cache/models- 特别是如果您在最初创建和运行这些文件后添加了这些更改。有时这就是全部~ -
同时检查您的 (app_) 模型是否有任何
$this->recursive痕迹 - 如果它小于 0,您将不会获得相关数据。
标签: php cakephp cakephp-1.3