Как тощий контроллеры должны быть, как жир должен быть модели в CakePHP?


Я знаю, что это хорошая идея, чтобы положить все данные, связанные с логикой в вашей модели в CakePHP, но что бы вы сказали о каждой модели::найти() и его параметры в модели? Это хорошая практика, или просто принимать вещи слишком далеко?

Например, это:

PostsController:

function index() {
    $posts = $this->Post->getLatest();
    $this->set(compact('posts'));
}

Модель Post:

function getLatest() {
    $params = array(
        'conditions' => array('published' => 1),
        'limit' => 5,
        'order' => 'publish_date DESC'
    );
    return $this->find('all', $params);
}

Лучше, чем этот:

PostsController:

function index() {
    $params = array(
        'conditions' => array('published' => 1),
        'limit' => 5,
        'order' => 'publish_date DESC'
    );
    $posts = $this->Post->find('all', $params);
    $this->set(compact('posts'));
}

Какие мысли? Что лучше с точки зрения архитектуры?



1233
3
задан 28 мая 2011 в 09:05 Источник Поделиться
Комментарии
2 ответа

Это совершенно egilable в стенографировать-найти функции. Таким образом, контроллер не зависит от параметров модели. Я склонен заходить так далеко, что я не использую любые поля прямо в мои контроллеры (и, таким образом, не используя найти в контроллеры на всех).
Вы можете сохранить переменную, определив массиве в Найти-звоните хорошо ;).

4
ответ дан 29 мая 2011 в 10:05 Источник Поделиться

Я знаю, это старый вопрос, но я думал, я хотел бы поделиться своим опытом.

Недавно у меня было приложение, в котором я был болен, определяющих все содержат объединений каждый раз, когда я хотел сделать запись. Так что я создал приложение::getApplication($ИД); метод, который включал и их условия.

Это работало отлично, каждый раз, когда я хотел я просто назвал это. к сожалению, когда я переехала к производству и имел дело с гораздо больший объем данных этот был слишком медленным, чтобы использовать в много мест. Мне пришлось вернуться назад и изменить все вызовы getApplicaion() в обычной находит, где бы я мог подправить содержит параметр, чтобы только получить то, что мне нужно.

1
ответ дан 24 февраля 2012 в 10:02 Источник Поделиться