Это плохая форма для использования var $uses
в CakePHP 1.3+. Его заменил App :: import ( см. Ниже )
Если у вас есть контроллер Users с моделью User и контроллер Comments с моделью Comment. Принятые образцы:
Использование ассоциаций
Это ваш лучший выбор, если модели могут быть логически связаны.
// models/user.php
Class User extends AppModel {
public $hasMany = array('Comment');
}
// controllers/users_controller.php
Class UsersController extends AppController {
function allComments() {
$this->User->Comment->find('all'); // You can use this across multiple models (e.g. $this->User->Comment->NestedComment->find('all');
}
}
Создание экземпляра модельного объекта
Это загрузит файл вашей модели, добавит экземпляр к карте объектов CakePHP и вернет экземпляр.
// models/user.php
Class User extends AppModel {}
// models/comment.php
Class Comment extends AppModel {}
// controllers/users_controller.php
Class UsersController extends AppController {
function allComments() {
$Comments =& ClassRegistry::init('Comment');
$Comments->find('all');
}
}
Использование $ this-> loadModel
Внутренне это использует ClassRegistry :: init, а затем добавляет модель в качестве свойства контроллера.
// models/user.php
Class User extends AppModel {}
// models/comment.php
Class Comment extends AppModel {}
// controllers/users_controller.php
Class UsersController extends AppController {
function allComments() {
$this->loadModel('Comment');
$this->Comment->find('all'); // using load model allows you to access it via $this->Model
}
}
App :: импорт
Это действительно просто CakePHP способ требовать файл. Вам все еще нужно будет создать экземпляр объекта.
// models/user.php
Class User extends AppModel {}
// models/comment.php
Class Comment extends AppModel {}
// controllers/users_controller.php
App::import('Model', 'Comment');
Class UsersController extends AppController {
function allComments() {
$Comment = new Comment();
$Comment->find('all');
}
}
Надеюсь, это поможет.
Редактировать: Если вы хотите использовать объект модели глобально в контроллере, вы можете использовать любой из этих шаблонов, которые я указал в вашем beforeFilter()
.