我刚学习CakePHP,请原谅我
我正在使用带有UsersController的CakePHP 1.2.5 Auth组件。用户模型包含两个表:
class User extends AppModel {
var $name = 'User';
var $belongsTo = 'Company';
}
当调用login()时,我看到在SQL日志中检索的数据(正在执行LEFT JOIN),因此模型似乎正确,但Auth只存储来自users
表的数据并丢弃所有内容其他。如何在不进行额外查询的情况下检索公司数据?
答案 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。页面底部附近有一个用户/个人资料/示例。