CakePHP:不同模型和使用的表名的问题
我遇到了一个问题,我会说CakePHP:不同模型和使用的表名的问题,cakephp,cakephp-1.3,Cakephp,Cakephp 1.3,我遇到了一个问题,我会说 Error: Database table catalog_product_entity for model CatalogProductEntity was not found. 我希望模型MagentoCatalogProductEntity使用表catalog\u product\u entity,但为什么它要查找以我定义的表命名的模型,而不是实际的模型名称,MagentoCatalogProductEntity 我有 magento_catalog_produ
Error: Database table catalog_product_entity for model CatalogProductEntity was not found.
我希望模型MagentoCatalogProductEntity
使用表catalog\u product\u entity
,但为什么它要查找以我定义的表命名的模型,而不是实际的模型名称,MagentoCatalogProductEntity
我有
magento_catalog_product_entity.php
class MagentoCatalogProductEntity extends AppModel {
public $name = 'MagentoCatalogProductEntity';
public $useTable = 'catalog_product_entity';
...
}
class CatalogProductEntity extends AppModel {
public $name = 'CatalogProductEntity';
public $useTable = 'catalog_product_entity';
...
}
magento_catalog_product_entity_controller.php
class MagentoCatalogProductEntityController extends AppController {
public $name = 'MagentoCatalogProductEntity';
....
}
class CatalogProductEntityController extends AppController {
public $name = 'CatalogProductEntity';
....
}
请注意,如果模型名称和$useTable
共享相似的名称,它是否会出现一些错误,从而无法正常工作
test.php
class Test extends AppModel {
public $name = 'Test';
public $useTable = 'catalog_product_entity';
...
}
编辑2013-06-12
我无法找出我上面提供的设置有什么问题。我目前正在使用以下工具。。我真的希望文件和类名中有“magento”前缀,但现在就可以了
catalog\u product\u entity.php
class MagentoCatalogProductEntity extends AppModel {
public $name = 'MagentoCatalogProductEntity';
public $useTable = 'catalog_product_entity';
...
}
class CatalogProductEntity extends AppModel {
public $name = 'CatalogProductEntity';
public $useTable = 'catalog_product_entity';
...
}
目录\产品\实体\控制器.php
class MagentoCatalogProductEntityController extends AppController {
public $name = 'MagentoCatalogProductEntity';
....
}
class CatalogProductEntityController extends AppController {
public $name = 'CatalogProductEntity';
....
}
如果Cake忽略了您的
$useTable
属性,那是因为它根本没有加载模型类(文件可能命名错误,或者位于错误的位置)。您可以通过验证CatalogProductEntity模型的类是否为AppModel
——或者简单地在模型文件中放入一个明显的php错误,并查看它是否会破坏您的应用程序来检查这一点。我尝试过破坏magento\u catalog\u product\u entity.php
,这会产生一个解析错误,所以它肯定在读取文件。。陛下注意,我在帖子中添加了一个case,其中$useTable
按预期工作。where?请注意,“您的问题很难理解,例如,错误:数据库表目录\产品\实体。。。找不到。
和请注意,在本例中,存在名为catalog\u product\u实体的表
是矛盾的和令人困惑的。您给出了一个示例模型和控制器,其中您说,“注意这是可行的”,那么为什么不使用该代码呢,你没有解释为什么不能?我不想使用名为Test
或tests
的模型或控制器。在“注意..”部分中,我试图说明,如果我对$useTable='catalog\u product\u entity'
使用不同的模型和控制器名称,事情就会按预期工作,而如果我对$useTable='catalog\u product\u entity'
使用类似的模型/控制器名称,CakePHP认为模型名应该是指定要使用的表的大小写。