2013-08-18 3 views
0

Предположим, у меня есть эти модели - почта, категория, пользователь. Должность принадлежит категории и пользователю.загружать модели в разные характеристики контроллера cakephp

В моем PostsController внутри какого-либо действия, я хочу, чтобы получить данные из категорий или пользователей таблицы можно использовать один из следующих

1) public $uses = array('Post', 'Category', 'User') and use Category model like 
$this->Category->find('all'); everywhere in that controller 

2) $this->Post->Category ->find('all'); 

3) $this->loadModel('Category '), than use 
    $this->Category->find('all') in that action 

Итак, мой вопрос, который один из них будет иметь лучшую производительность и почему ? Возможно, для небольших приложений это не будет иметь видимого эффекта, но что, если проект большой, и есть десятки моделей, которые должны использоваться в одном контроллере, и каждое небольшое улучшение производительности имеет значение.

Благодаря

ответ

2

Если у вас уже есть объединение в модели, использовать это (# 2). Это имеет смысл, потому что эти модели, скорее всего, уже будут загружены (если вы не кешируете).

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

+1

+1 хотя в 2.3, вероятно, нет никакой разницы между любыми параметрами, поскольку модели ленивы загружаются при первом доступе/ссылке – AD7six