laravel 中的多态关系问题

Polymorphic relationship trouble in laravel

好的,所以我正在努力了解 laravel 中的多态性。

我正在构建一个拥有 2 种不同类型用户(招聘人员、候选人)的网站

它们都有一些我在用户中创建的共同细节 table:

|编号 |用户名 |电邮 |密码 | detailable_id | detailable_type

其余的细节将会非常不同,所以我想我可以使用多态性来帮助我解决这个问题。所以我又创建了 2 个 tables:

招聘人员 -> 包含招聘人员的具体细节

候选人 -> 包含候选人的具体细节

我每个都有模型 table

用户模型:

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');
    }
}

所以我是这样做的,因为大多数教程都是这样解释的(大多数都在解释如何将评论添加到不同的对象上) 然而,这并不像我需要的那样工作。在这里,如果我有招聘人员 ID 或对象,我可以做类似 $user = App\Recruiter::find($recruiter_id)->user 的事情来获取用户。但我理想情况下想要做的是说 $details = App\User::find('$user_id')->detailsAuth::user()->details

我真的想不通我将如何完成这项工作,有人可以帮忙吗?或者也许告诉我这做不到

我觉得很愚蠢,因为我刚刚在 Laravels 文档中找到了答案。您可以使用此设置执行我要求的操作,我所要做的就是键入 Auth::user()->detailable 和此 returns 用户的详细信息