我有一个名为'table'的表,用于存储数据库中其他表的详细信息。我现在正在创建一个功能,无论何时在此表中插入表名,都会创建相同的表。例如,如果我插入一个名为“wf_128fe”的表,则会创建一个包含一些动态字段的表。现在,由于我们正在动态创建新表,因此我们不会为每个表创建MVC。在这种情况下,我们如何在这些表中检索/存储值。
<?php
$table='wf_128fe';
$table_details=$this->$table->find('all');
?>
这不起作用,因为新表没有任何模型。在这种情况下,如何在新表中检索详细信息/存储数据。
答案 0 :(得分:0)
首先,你可能想重新思考你在那里做什么,动态创建表只应该在非常罕见的边缘情况下,所以有很多可能更好的方法来实现你想要用这个动态表的东西实现的任何东西,同时也坚持CakePHP标准。
话虽这么说,为此目的使用通用模型应该工作,使用ClassRegistry::init()
实例化它并传递适当的表名。这甚至可以在只有AppModel
类存在的情况下使用,该类被ClassRegistry::init()
用作后备。
$Model = ClassRegistry::init(array('class' => 'Wf128fe', 'table' => 'wf_128fe'));
$details = $Model->find('all');
这将创建AppModel
的实例,其中Wf128fe
为Model::$name
,Model::$alias
,wf_128fe
设置为Model::$table
和{{ 1}}。
如果您需要特定的方法,属性等,可以采用上述通用模型:
Model::$useTable
class DynamicTable extends AppModel
{
public function someMethodDoingSomethingSpecialSpecificToDynamicTables()
{
}
}