2012-10-04 55 views
1

我使用验证::检查(“用户”,$这个 - >请求),其中“用户”是我的验证:: config配置的名称,成功根据用户表进行身份验证和登录用户。用户登录成功后,用户信息将存储在会话中,并可通过Auth :: check('user')进行访问。锂验证::请与用户的关系,关系数据库

我有一个关系设计在地方的用户表中有一个名为站点表一个多到一的关系。当Auth :: check查询Users表以认证登录的用户时,它只返回Users表中的信息。我需要Auth:检查以从Sites表中返回用户及其相关数据。用户和网站模型都具有相应的hasOne并定义了许多关系。如何确保用户通过Auth :: check()查询并返回相应的相关数据?

回答

1

尽管存储更多的会话信息通常不是绝对必要,但可以通过Form身份验证适配器的'query'配置密钥来执行此操作。只需在您的Users模型中创建一个包装器方法,该方法可以带一个查询配置数组,并返回一个带有关联关系的用户对象。大概是这样的:

public static function authenticate (array $query) { 
    return static::all($query + array('with' => 'Sites')); 
} 

然后,添加'query' => 'authenticate''user' AUTH配置。

+1

不是静态::首先是最好的对静::所有?既然我们希望只能返回一个用户? – Nils