使用Laravel的5.2身份验证,文档显示我可以为身份验证查询添加更多条件,如下所示:
指定其他条件
如果您愿意,除了用户的电子邮件和密码之外,您还可以为身份验证查询添加额外条件。例如,我们可能会验证用户是否已标记为"有效":
if (Auth::attempt(['email' => $email, 'password' => $password, 'active' => 1])) {
// The user is active, not suspended, and exists.
}
就我而言,我想设定一个生活在另一个多对多的雄辩模型中的条件:
class Account extends Model
{
public function users() {
return $this->belongsToMany('App\User', 'account_users');
}
}
class User extends Model implements AuthenticatableContract
{
public function accounts() {
return $this->belongsToMany('App\Account', 'account_users');
}
}
有一个帐户id
通过中间件传递,我可以这样访问:
$request->account
如何在引用相关模型时实施新条件?我只是不知道如何利用ORM关系。任何指向正确方向的帮助都非常感谢!
答案 0 :(得分:0)
如果你想利用Eloquent的关系,你很可能需要在'if'控制结构中添加另一个条件。在你的Auth :: attempt()完成之前 - 没有Auth :: user()对象,你需要ORM的那个对象。
因此,您可以执行以下操作:
if (Auth::attempt(['email' => $email, 'password' => $password])) {
// Your extra conditions for accounts, just a couple of examples
if (count(Auth::user()->accounts) == 0) Auth::logout();
if (! Auth::user()->accounts()->active()->get()) Auth::logout();
}