0

我有一个名为“表”的表,它存储数据库中其他表的详细信息。我现在正在创建一个功能,这样每当表名插入到这个表中时,就会创建同一个表。例如,如果我插入一个名为 'wf_128fe' 的表,那么将使用一些动态字段创建同一个表。现在,由于我们正在动态创建新表,因此我们不会为每个表创建 MVC。在这种情况下,我们如何在这些表中检索/存储值。

<?php
$table='wf_128fe';
$table_details=$this->$table->find('all');
?>

这不起作用,因为新表没有任何模型。在这种情况下,我如何在该新表中检索详细信息/存储数据。

4

1 回答 1

0

首先,您可能想重新考虑您在那里所做的事情,仅在极少数的边缘情况下才需要动态创建表,因此很可能有更好的方法来实现您尝试使用此动态表实现的任何目标,同时也坚持 CakePHP 标准。

话虽如此,为此目的使用通用模型应该可以工作,使用ClassRegistry::init()并传递适当的表名来实例化它。这甚至可以在只AppModel存在一个类的情况下工作,该类被ClassRegistry::init().

$Model = ClassRegistry::init(array('class' => 'Wf128fe', 'table' => 'wf_128fe'));
$details = $Model->find('all');

这将创建一个AppModel, 和Wf128feas的实例,并设置为Model::$nameand 。Model::$aliaswf_128feModel::$tableModel::$useTable

如果您需要特定的方法、属性等,提到的通用模型可能是要走的路:

class DynamicTable extends AppModel
{
    public function someMethodDoingSomethingSpecialSpecificToDynamicTables()
    {
    }
}
$Model = ClassRegistry::init(array('class' => 'DynamicTable', 'table' => 'wf_128fe'));
$details = $Model->find('all');
于 2013-09-07T14:10:51.450 回答