Реализация пользовательских слоя / классов базы данных, где они должны находиться в папке приложения Cake? - PullRequest
0 голосов
/ 09 декабря 2010

Мне интересно, где мой слой / классы базы данных должны находиться в папке приложения Cake.

  1. Должен ли я создавать их как компоненты и сохранять их в папке компонентов?
  2. Должен ли я создать их как классы и поместить их в папку классов?Если да, то как их можно создать в моем контроллере?

Это означает, что все мои контроллеры будут иметь следующую строку:

var $uses = array('');

Редактировать: В основном япишу свои запросы вручную и буду вызывать мои классы внутри контроллера.Я задаюсь вопросом об оптимальном способе реализации этого.Я понимаю, что это включает отказ от Модельного подхода в CakePHP.

Edit2: я пытался использовать пользовательские запросы в моей модели - т.е.Model-> query ('sql here ...').Однако, даже если вы можете указать параметры для запроса, я думаю, что они не подготовлены / не экранированы таким образом, который защищает вас от SQL-инъекций?

Ответы [ 2 ]

1 голос
/ 09 декабря 2010

Уровень базы данных связан с моделью, а не с контроллером (или компонентом).Cake предлагает способ реализовать это через источники данных: http://book.cakephp.org/view/1075/DataSources

0 голосов
/ 09 декабря 2010

Судя по вашим комментариям, вы просто хотите написать свои собственные запросы. Вы можете сделать это с помощью Model :: query (SQL_STRING). В вашем контроллере

function someaction() {
 $result = $this->Mymodel->query( 'SELECT name FROM users WHERE id=5' );
}

Ваш массив $ result будет выглядеть немного странно, поэтому я рекомендую использовать функциональность CakePHP Set для преобразования их в то, что вам нужно. http://book.cakephp.org/view/640/Set

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...