CakePHP Auth检索额外数据

时间:2010-01-23 21:42:01

标签: php cakephp authentication cakephp-1.2

我刚学习CakePHP,请原谅我

我正在使用带有UsersController的CakePHP 1.2.5 Auth组件。用户模型包含两个表:

class User extends AppModel {
    var $name = 'User';
    var $belongsTo = 'Company';
}

当调用login()时,我看到在SQL日志中检索的数据(正在执行LEFT JOIN),因此模型似乎正确,但Auth只存储来自users表的数据并丢弃所有内容其他。如何在不进行额外查询的情况下检索公司数据?

3 个答案:

答案 0 :(得分:4)

或者如果你不习惯像我这样修改核心库,你也可以......

UsersController.login行动

function login() {
    if ($this->Auth->user()) {
        $Session->write('Company', $this->User->Company->findById($this->Auth->user('id')));
        $this->redirect($this->Auth->redirect());
    }

}

您可以使用控制器上的$this->Session->read('Company.name')和视图中的$session->read('Company.name')来访问公司详细信息。不要忘记添加Session组件和帮助器。

答案 1 :(得分:2)

在819行的cake / libs / controller / components / auth.php中,它应该是

$data = $model->find(array_merge($find, $conditions), null, null, 0);

尝试将其更改为

$data = $model->find(array_merge($find, $conditions), null, null, 1);

基本上将递归设置为1 可能也需要在其他地方这样做。

答案 2 :(得分:1)

比改变核心更好,尝试可以控制的行为:http://book.cakephp.org/view/474/Containable。页面底部附近有一个用户/个人资料/示例。