在我的一个项目中,我有一个功能:
public function select($table){
$model=Inflector::singularize($table);
$result=$this->$model->find('all'));
...........
...........
}
在这里,我尝试从给定的“表名”($ table)中获取Model
名称,并使用该模型的find
函数来选择该表中的所有数据。但那没用。
那么,我该怎么办?有人可以帮帮我吗?
由于
答案 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)。您或任何其他开发人员可能会在开发的后期阶段感到困惑。可能没什么坏处,我只是不推荐它。
享受