我正在尝试使用5.2版创建一个laravel应用程序。哪里会有3种类型的用户
users
”表
这个。 owners
”为此。customers
”。现在我的问题是:
我想确保登录所有者将获得正确的身份验证并重定向到他们自己的(其他默认的Auth路由)路由。
与客户一样,他们将主要通过网站的前端登录,因此他们的路线将与业主和管理员不同。这些客户也将获得身份验证。
我该如何管理?我一直在使用单人桌,但作为Laravel的新人我不知道如何用多桌来实现。
我已经检查了laravel 5.2现在开始支持多个gaurds,但不知道我该怎么做。
这有一些包,但我不想在包上转发这个。
谢谢!
答案 0 :(得分:1)
我建议您遵循 Polymorphic 方法。
假设有三种不同的表格:administrators
,owners
,customers
现在,对于所有这些,有一个名为users
的公用表,其中包含以下列: - profile_id , profile_type 。
现在profile_id
将成为表administrators
,owners
和customers
的外键,而 profile_type 将成为哪个 用户所属的模型 。
关系就像,
class User {
public function profile() {
return $this->morphTo();
}
}
--
class Administrator {
public function user() {
return $this->morphOne('App\User', 'profile');
}
}
我们正在使用morphOne
代替morphMany
,因为users
表中的 profile_id 字段对于一个管理员应该只有一行。
最后,出于创建/存储的目的。你必须: -
创建一个像
这样的管理员 $admin = Administrator::create($inputs);
然后做
$user = new User($inputs);
$admin->user()->save($user);
你已经完成了!
您可以从https://laravel.com/docs/5.1/eloquent-relationships#polymorphic-relations
了解有关此方法的更多信息谢谢,