如何从CakePHP中的表名获取模型名称

时间:2014-04-02 16:37:33

标签: mysql cakephp

在我的一个项目中,我有一个功能:

public function select($table){
        $model=Inflector::singularize($table);
        $result=$this->$model->find('all'));
        ...........
        ...........
}

在这里,我尝试从给定的“表名”($ table)中获取Model名称,并使用该模型的find函数来选择该表中的所有数据。但那没用。

那么,我该怎么办?有人可以帮帮我吗?

由于

3 个答案:

答案 0 :(得分:1)

你可以使用我的技巧。根据型号名称创建表名,或者使用substr()或strstr()可以提取表前缀,然后就可以使用你的模型,

$tableName="myprefix_posts";
$dynamicModelName=strstr($tableName,"myprefix_");
 $this->loadmodel($dynamicModelName);

if( $this->$dynamicModelName->save($this->data)){
// your code
}

答案 1 :(得分:0)

您可以使用Inflector类将表名单一化。例如:

$dynamicModel = Inflector::singularize($table);

如果您想通过$this->Model使用模型,则必须先加载它。

$this->loadmodel($dynamicModel);

答案 2 :(得分:0)

只是一个友好的警告:尽量不要像在上面的函数中那样使用可能是PHP或MySQL中的关键字作为变量或函数名称(select)。您或任何其他开发人员可能会在开发的后期阶段感到困惑。可能没什么坏处,我只是不推荐它。

享受