在cakePHP上使用单数和复数模型名访问模型的差异

在cakePHP上使用单数和复数模型名访问模型的差异,cakephp,model,naming-conventions,Cakephp,Model,Naming Conventions,单数和复数型号名称之间有什么不同的用途?。如果我们有一个名为catalog的模型,另存为catalog.php。然后,我们有一个控制器。如果我们使用“$uses”变量来定义应该涉及的模型,请参见下面的代码: class CataloguesController extends AppController { var $name = 'Catalogues'; var $uses = array('Hierarchy', 'Catalogue', 'Catalogues'); }

单数和复数型号名称之间有什么不同的用途?。如果我们有一个名为catalog的模型,另存为catalog.php。然后,我们有一个控制器。如果我们使用“$uses”变量来定义应该涉及的模型,请参见下面的代码:

class CataloguesController extends AppController {
    var $name = 'Catalogues';
    var $uses = array('Hierarchy', 'Catalogue', 'Catalogues');
}
我在上面提到过,相关型号只是一个目录

与以下内容的区别是什么:

$queried = $this->Catalogues->find('all');


不同之处在于,该模型的复数形式无效。模型名称总是单数。

此外-如果模型的表是cataloges,则模型名称应为catalog,文件名应为catalog.php


您的文件名与型号名称不匹配。

总之,按惯例。Cake假设模型名称为单数。尽可能少地反对公约。正确,公约名称应该是单数的模型。但如果我们使用复数模型名(条件:我们只有cataloge.php),使用“cataloges”将产生与“cataloge”模型相同的结果。为什么cakePHP,允许访问复数模型名(参见我的先决条件)。那个么,我不理解你们的问题。惯例是模型是单数的。如果Cake允许您使用复数形式访问它,则这是一个副作用或bug。至于“有什么区别”这个问题,除了复数形式之外,没有任何区别。我完全同意,可能是副作用或错误。我只是想知道cakePHP是否允许它用于某些用途。是的,我有一个名为“目录”的表。还有名为“目录”的模型。为什么cakePHP允许同时使用“目录”和“目录”访问该模型?事实并非如此——当您引用目录时,几乎可以肯定它是AppModel的一个实例,而不是Catalog。AppModel的一个实例?。那么,为什么它可以提供对“目录”表的访问呢。我忘了提到,上面两条语句返回相同的结果。如果您尝试调用一个没有模型文件但有相应db表的模型,cake将自动使用AppModel的实例。尝试查看这两个模型是AppModel的实例还是它本身。否则,我可能会检查屈折因子,看看它是否在那个词上起作用。
$queried = $this->Catalogue->find('all');