是否可以为 Eloquent 关系动态设置模型?

Is it possible to dynamically set model for Eloquent Relationships?

我有 2 个用户角色。在数据库中,我有自己的两个角色的配置文件表(model_profilesclient_profiles)。有没有办法动态设置相关的配置文件模型?我试过这个:

//User model:    
public function profile(){   
  return $this->role == 'model' ? $this->hasOne('App\Models\Model\Profile') : $this->hasOne('App\Models\Client\Profile');
}

但在这种情况下,我不能使用某些 Eloquent 方法,例如 User::with('profile')->whereIn('id', [1,2,3])->get();,因为在加载用户模型之前,$this->rolenull

有没有什么方法可以使用基于用户角色的 Profile 模型并且不丢失任何 Eloquent 查询方法?

您可以使用多态关系(More Information)