好的所以我试图在laravel中了解多态性。
我正在建立一个拥有2种不同类型用户的网站(招聘人员,候选人)
他们都有一些我在用户表中创建的常见细节:
| id |用户名|电子邮件|密码| detailable_id | detailable_type
其余的细节将会非常不同,所以我认为我可以使用多态来帮助我。所以我创建了另外2个表:
招聘人员 - >包含招聘人员的具体细节
候选人 - >包含候选人特定细节
我有每张桌子的模型
用户模型:
class User extends Model implements AuthenticatableContract, CanResetPasswordContract {
use Authenticatable, CanResetPassword;
protected $table = 'users';
protected $fillable = ['username', 'email', 'password'];
protected $hidden = ['password'];
public function detailable()
{
return $this->morphTo();
}
}
候选人模特:
class Candidate extends Model {
public function user()
{
return $this->morphOne('App\User', 'detailable');
}
}
招聘人员模型:
class Recruiter extends Model {
public function user()
{
return $this->morphOne('App\User', 'detailable');
}
}
所以我这样做是因为大多数教程都是这样解释的(大多数都解释了如何将注释添加到不同的对象上)
然而,这并不适用于我需要它。在这个我可以做$user = App\Recruiter::find($recruiter_id)->user
之类的事情来获取用户,如果我有招聘人员ID或对象。但理想情况下我想做的就是说$details = App\User::find('$user_id')->details
或Auth::user()->details
我真的无法理解我是如何做这项工作的,有人可以帮忙吗?或者也许告诉我这不能完成
答案 0 :(得分:0)
我觉得非常愚蠢,因为我刚刚在Laravels文档中找到答案。您可以使用此设置执行我需要的操作,我只需键入Auth::user()->detailable
并返回用户的详细信息