Cakephp模型:如何将所有表的名称作为单数使用?

Cakephp模型:如何将所有表的名称作为单数使用?,php,cakephp,Php,Cakephp,我有一个现有的数据库,大约有37个单数表。现在,我要制作一个cakephp应用程序,其中控制器名称应该是单数的&表名称已经是单数了。我的cakephp版本是2.5.5 我可以使用public$useTable=table\u name或 屈折因子::规则'复数',数组'不规则'=>数组'表格名称'=>'表格名称' 但我认为对于如此多的表来说,这不是一个更好的解决方案 是否有任何快捷方式,使所有模型在默认情况下都能以单数语法找到表名?文档将显示: public $useTable = 'your_

我有一个现有的数据库,大约有37个单数表。现在,我要制作一个cakephp应用程序,其中控制器名称应该是单数的&表名称已经是单数了。我的cakephp版本是2.5.5

我可以使用public$useTable=table\u name或 屈折因子::规则'复数',数组'不规则'=>数组'表格名称'=>'表格名称'

但我认为对于如此多的表来说,这不是一个更好的解决方案


是否有任何快捷方式,使所有模型在默认情况下都能以单数语法找到表名?

文档将显示:

public $useTable = 'your_singular';

在您的模型中就可以做到这一点。

文档将揭示:

public $useTable = 'your_singular';
在您的模型中就可以做到这一点。

使用烘焙壳 您可以简单地烘焙模型,shell将为不符合模型名称的默认表格化变体的不规则表格名称正确设置Model::$useTable属性

另见

或应用程序模型 默认情况下,使用

因此,一种方法是执行类似的操作,并在AppModel构造函数中动态设置$useTable的奇异表名

这里有一个未经测试的例子,说明了我所说的

class AppModel extends Model {
    public function __construct($id = false, $table = null, $ds = null) {
        if (is_array($id)) {
            extract(array_merge(array('name' => $this->name), $id));
        }
    
        if ($this->name === null) {
            $this->name = (isset($name) ? $name : get_class($this));
        }

        // set underscored model name as table name
        // ex TableName results in table_name
        $this->useTable = Inflector::underscore($this->name);

        parent::__construct($id, $table, $ds);
    }
}
使用烤壳 您可以简单地烘焙模型,shell将为不符合模型名称的默认表格化变体的不规则表格名称正确设置Model::$useTable属性

另见

或应用程序模型 默认情况下,使用

因此,一种方法是执行类似的操作,并在AppModel构造函数中动态设置$useTable的奇异表名

这里有一个未经测试的例子,说明了我所说的

class AppModel extends Model {
    public function __construct($id = false, $table = null, $ds = null) {
        if (is_array($id)) {
            extract(array_merge(array('name' => $this->name), $id));
        }
    
        if ($this->name === null) {
            $this->name = (isset($name) ? $name : get_class($this));
        }

        // set underscored model name as table name
        // ex TableName results in table_name
        $this->useTable = Inflector::underscore($this->name);

        parent::__construct($id, $table, $ds);
    }
}

请始终提及您的确切CakePHP版本,并相应地标记您的问题!只需将数据库表更改为复数形式,然后就可以使用CakePHP的常规命名约定。我已经提到了CakePHP版本@ndmI,我们已经有了一个数据库系统&现在我要用CakePHP使用现有数据库制作另一个应用程序。无法修改数据库或表名@对不起,您只需要编辑每个模型并添加这个。public$useTable='tablenamewithS';这是解决您问题的唯一方法。请始终提及您的确切CakePHP版本,并相应地标记您的问题!只需将数据库表更改为复数形式,然后就可以使用CakePHP的常规命名约定。我已经提到了CakePHP版本@ndmI,我们已经有了一个数据库系统&现在我要用CakePHP使用现有数据库制作另一个应用程序。无法修改数据库或表名@对不起,您只需要编辑每个模型并添加这个。public$useTable='tablenamewithS';这是你问题的唯一解决办法。谢谢你的回答。我在我的问题中提到过这一点。我认为对于这么多的表来说,这不是一个更好的解决方案。谢谢你的回答。我在我的问题中提到过这一点。我认为对于这么多的桌子来说,这不是一个更好的解决方案。它不是真正的烘焙代码,不是烹饪,而且面包房很有趣&名字不对。它叫做自动生成MVC文件。这是不对的,CakePHP安装了一个低级驱动程序,使用高度复杂的组合蛋白质折叠算法,将GPU加热到像烤箱一样的温度,从而吸引平行宇宙中的字符串元素,CakePHP然后使用字符串在发光的散热片上烘焙0和1二进制数字,最后从烘焙的比特汇编代码文件,天啊,每个人都知道这就是为什么它被称为bakery@jQueryAngryBirdits不是真正的烘焙代码,不是烹饪,而且面包房很有趣&名字不对。它叫做自动生成MVC文件。这是不对的,CakePHP安装了一个低级驱动程序,使用高度复杂的组合蛋白质折叠算法,将GPU加热到像烤箱一样的温度,从而吸引平行宇宙中的字符串元素,CakePHP然后使用字符串在发光的散热片上烘焙0和1二进制数字,最后从烘焙的比特汇编代码文件,天啊,每个人都知道这就是为什么它被称为bakery@jQueryAngryBird