4

我只是在学习 CakePHP,请见谅

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

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

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

4

3 回答 3

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组件和助手。

于 2010-01-25T05:56:47.190 回答
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 可能也需要在其他一些地方执行此操作。

于 2010-01-25T02:20:14.643 回答
1

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

于 2010-01-25T09:53:29.060 回答