Cakephp 从模型中删除belongsTo将显示警告模型';x';与型号';y';

Cakephp 从模型中删除belongsTo将显示警告模型';x';与型号';y';,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我是CakePHP新手,我必须维护/开发一个CakePHP应用程序,并努力删除其中一个模型中的BelongsTo 代码是从另一个使用了更多相关表的项目复制而来的。在新的项目中,我不需要关系,因为它在查询中创建了左连接,我真的想去掉这些连接以加快速度。因此,我进入模型并删除了$belongsTo属性 当我进入主页时,我现在收到一条警告:- Warning (512): Model "Product" is not associated with model "ParentProduct" [CO

我是CakePHP新手,我必须维护/开发一个CakePHP应用程序,并努力删除其中一个模型中的BelongsTo

代码是从另一个使用了更多相关表的项目复制而来的。在新的项目中,我不需要关系,因为它在查询中创建了左连接,我真的想去掉这些连接以加快速度。因此,我进入模型并删除了
$belongsTo
属性

当我进入主页时,我现在收到一条警告:-

Warning (512): Model "Product" is not associated with model "ParentProduct"
 [CORE/Cake/Model/Behavior/ContainableBehavior.php, line 343]
如果我关闭调试,它不会显示,但我想知道为什么会生成此消息。我找不到任何关于如何删除
关系的信息


感谢您的帮助。

之所以生成此消息(很可能),是因为在您的控制器中(首先检查ParentProductsController)类似于

$this->ParentProductsController->Product->find();
模型的这种关联不再存在,因为您想摆脱它,所以父产品无法称之为产品。你需要把那样的电话换成电话

ClassRegistry::init('the_name_of_the_model');
(在本例中为
ClassRegistry::init('Product');
)或使用

$this->loadModel('Product');
现在,这仅在调用与当前控制器无关的模型时才有必要。如果从ProductsController调用
Product->find
,则不会出现错误

好的,这就是错误的原因。
但是现在:我不建议您删除关联。实际上没有必要删除代码中的逻辑关联,即使它仍然存在于数据库中。还有其他方法可以避免对数据库进行左连接和无用的查询,而不会伤害到任何人

如果您想加快速度,请阅读并将所有模型设置为
$recursive=-1
()。这样,除非你明确地说,否则你不会得到左连接

因此,我进入模型并移除$belongsTo属性

因为这是你自找的 错误地使用时会显示此类错误

例如,考虑用户有很多文章,下面的代码:

$User->find('all', array(
    'contain' => array(
        'Article'
    )
));
这将返回所有用户及其文章(仅限),而不考虑存在的任何其他关联

如果请求的关联未定义:

$User->find('all', array(
    'contain' => array(
        'Article',
        'Comment'
    )
));

Containable将生成一个警告,以便您,开发人员,可以知道您的结果中不会有任何表示输入错误或其他类型开发错误的注释(啊…它是用户关联在两个模型中都定义了,因此您需要将其从Product和ParentProduct中删除。此外,请检查查询的代码-它可能引用了其他模型。ParentProduct不作为模型存在…它引用了原始产品模型。因此,创建了一个到同一个表的左联接。Thanks的答复,但我真的想删除关联。该网站是一个现有的副本,不需要很多的关系设置。