cakePHP: Можете ли вы запросить базу данных из вспомогательного класса?

Привет, просто нужно знать, можете ли вы запрашивать базу данных из вспомогательного класса, следует ли вам это делать и как вы это делаете.

Спасибо


person geoffs3310    schedule 27.10.2010    source источник


Ответы (2)


Вы могли бы, передав ссылку на модель в представление как переменную через $this->set(), а затем запросив ее... но вы не должны. Это грязно ;-)

CakePHP использует модель MVC, а хелперы являются частью представления (V в MVC) — их работа заключается исключительно в отображении (уже доступной) информации, переданной ему от контроллера.

Если вашему представлению нужна дополнительная информация, то ваш контроллер должен был уже запросить модели, чтобы получить ее.

Я бы посоветовал вам прочитать о модели MVC, если вы не знакомы с ней, тогда может потребоваться некоторый рефакторинг!

person AdamGiles    schedule 28.10.2010
comment
Я не уверен, почему это помечено как правильное - это вообще не отвечает на вопрос - я также хотел бы знать, как помещать общие запросы к базе данных во вспомогательные файлы в cakephp. - person Rob; 24.09.2015

да. Вы можете запросить базу данных из вспомогательного файла. Пожалуйста, проверьте это: -

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();
person Ranjeet Singh    schedule 26.04.2016
comment
Это решение работает и отвечает на исходный вопрос. И это почти не грязно вообще. Мы здесь не для проповеди о принципах MVC. У нас есть проблемы, которые нужно решить как можно быстрее, с минимальным повреждением существующего кода. - person UncaAlby; 27.11.2018