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')->details
或 Auth::user()->details
我真的想不通我将如何完成这项工作,有人可以帮忙吗?或者也许告诉我这做不到
我觉得很愚蠢,因为我刚刚在 Laravels 文档中找到了答案。您可以使用此设置执行我要求的操作,我所要做的就是键入 Auth::user()->detailable
和此 returns 用户的详细信息
好的,所以我正在努力了解 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')->details
或 Auth::user()->details
我真的想不通我将如何完成这项工作,有人可以帮忙吗?或者也许告诉我这做不到
我觉得很愚蠢,因为我刚刚在 Laravels 文档中找到了答案。您可以使用此设置执行我要求的操作,我所要做的就是键入 Auth::user()->detailable
和此 returns 用户的详细信息