【问题标题】:Cake PHP dynamic tables retrievalCake PHP 动态表格检索
【发布时间】:2013-09-07 13:36:44
【问题描述】:

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

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

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

【问题讨论】:

    标签: php mysql cakephp-2.0 dynamic-data


    【解决方案1】:

    首先,您可能需要重新考虑您在那里所做的事情,仅在极少数的极端情况下才需要动态创建表格,因此很可能有更好的方法来实现您想要通过动态表格实现的目标,同时也坚持 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 和Model::$useTable。

    如果您需要特定的方法、属性等,上述通用模型可能是可行的方法:

    class DynamicTable extends AppModel
    {
        public function someMethodDoingSomethingSpecialSpecificToDynamicTables()
        {
        }
    }
    
    $Model = ClassRegistry::init(array('class' => 'DynamicTable', 'table' => 'wf_128fe'));
    $details = $Model->find('all');
    

    【讨论】:

    • 感谢您指路。但是我们需要在哪里写代码 "$Model = ClassRegistry::init(array('class' => 'Wf128fe', 'table' => 'wf_128fe')); $details = $Model->find('all ');" .. 在 AppModel 中??
    • 非常感谢.. 只是你的前两行代码有效:)
    猜你喜欢
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多