CAKEPHP:以与别名的非对象误差有关成员函数



我一直在我的一个控制器的索引函数中,在非对象的"错误"错误上呼叫"呼叫"。这是代码:

class ModulesController extends AppController {
     public $uses = array('Module', 'User');
     public $scaffold;
     function index() {
     if ($this->request->is('get')) { //Technically unecessary but good practice
       $email = AuthComponent::user('email'); 
       $user = $this->Module->User->findByEmail($email);
      //Code omitted
     }
}

这是我的模块模型:

class Module extends AppModel {
public $name = 'Module';
public $hasMany = array(
    'Slide' => array(
        'className'  => 'Slide',
        'foreignKey' => 'module_id',
        'order' => 'Slide.position ASC' //Let's make sure that name is correct
        ));
public $belongsTo = array(
    'Creator' => array(
        'className' => 'User'));    
public $hasAndBelongsToMany = array(
    'OUser' => array(
       'className'              => 'User',
       'joinTable'              => 'modules_users',
       'foreignKey'             => 'module_id',
       'associationForeignKey'  => 'user_id',
       'unique'                 => 'keepExisting',
    ));
       } //Unnecessary code omitted 

这是我用户模型的代码:

class User extends AppModel {
public $name = 'User';
public $uses = 'users';
public $hasMany = array(
    'OModule' => array( //Owner of Modules
        'className' => 'Module',
        'foreignKey' => 'user_id',
        'order' => 'Module.created DESC'
        ));
public $hasAndBelongsToMany = array(
    'Module' => array(
       'className'              => 'Module',
               'joinTable'              => 'modules_users',
               'foreignKey'             => 'user_id',
               'associationForeignKey'  => 'module_id',
               'unique'                 => 'keepExisting',
    ));
} //Unnecessary code omitted    

值得一提的是,用户和模块既有属于属于的关系,又具有HABTM关系,因此用户分别具有Aliases Creator和Ouser。在上面的代码中,FindbyEmail试图使用创建者的关系,但这给了我同样的错误。

我的问题是,我该如何调用findbyemail()方法没有错误?

更改:

$user = $this->Module->User->findByEmail($email);

to:

$user = $this->User->findByEmail($email);

voila!

原因:

某种程度上,要么有1)模块和用户之间没有关系,2)关系中的错误,或3)您对任何一个或两个都使用别名,以便使用模块 ->用户不正确。

无论如何,您都在加载"用户"模型,因此没有理由通过模块模型访问它 - 只需直接访问它(如上面的示例)。

最新更新