【问题标题】:cakePHP: Can you query the database from a helper class?cakePHP:你能从帮助类中查询数据库吗?
【发布时间】:2011-05-01 04:23:08
【问题描述】:

您好,您只需要知道您是否可以从帮助程序类中查询数据库,是否应该以及如何查询。

谢谢

【问题讨论】:

    标签: cakephp-1.3 helpers


    【解决方案1】:

    是的。您可以从帮助文件中查询数据库。请检查:-

    class YourHelperNameHelper extends AppHelper {
    
        function queryDbFromHelper()
        {
            // Load your model here
            App::import('Model','ModelName');
            $this->ModelName = new ModelName();
    
            //now you can use find method or another method to query DB.
            return $this->ModelName->find('all'); 
        }
    }
    // Include this helper in controller
    var $helpers = array('YourHelperName');
    
    // call this function in helper file.
    $this->YourHelperName->queryDbFromHelper();
    

    【讨论】:

    • 此解决方案有效,它回答了原始问题。而且它几乎一点也不凌乱。我们不是来为 MVC 的原则布道的。我们有问题要尽快解决,尽可能少地破坏现有代码。
    【解决方案2】:

    您可以通过 $this->set() 将对模型的引用作为变量传递到视图中,然后查询它...但您不应该这样做。很乱;-)

    CakePHP 使用 MVC 模型,助手是视图(MVC 的 V)的一部分——它们的工作纯粹是显示从控制器传递给它的(已经可用的)信息。

    如果您的视图需要额外的信息,那么您的控制器应该已经查询了模型以获取它。

    如果您不熟悉 MVC 模型,我建议您阅读它,然后可能需要进行一些重构!

    【讨论】:

    • 我不知道为什么这被标记为正确 - 它根本没有回答这个问题 - 我还想知道如何将常见的数据库请求放入 cakephp 的帮助文件中。