var $uses
在 CakePHP 1.3+中使用它被认为是糟糕的形式。它已被 App::import 取代(见下文)
假设您有一个带有 User 模型的 Users 控制器,以及一个带有 Comment 模型的 Comments 控制器。接受的模式是:
使用关联
如果模型可以在逻辑上关联,这是您最好的选择。
// 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
}
}
应用::导入
这实际上只是需要文件的 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()
.