我有一个名为User的模型,其中包含名称,国家和某些关系等内容。
现在我想要一个模型,例如供应商,具有与用户相同的功能和变量,包括更多内容
我认为我能做到这一点:
class User extends Model implements AuthenticatableContract
{
use Authenticatable; SoftDeletes;
protected $dates = ['deleted_at', 'last_login'];
protected $fillable = [
'name',
'password',
'country',
];
protected $hidden = ['password'];
public function logs()
{
return $this->hasMany('App\Log');
}
}
供应商模型:
class Vendor extends User
{
protected $fillable = [
'description'
];
public function user() {
return $this->belongsTo('App\User');
}
public function products()
{
return $this->hasMany('App\Product', 'vendor_id');
}
Controller会检查用户的角色并加载用户模型或供应商模型:
if(Auth::user()->role > 1)
$user = Vendor::where('user_id', Auth::user()->id)->first();
else
$user = Auth::user();
return $user->load('logs');
但是供应商的加载调用失败了。我能够加入供应商内部用户的领域,但我也需要它的功能。
答案 0 :(得分:0)
问题是日志功能会检查一个不存在的字段。 使用此功能有效:
public function logs()
{
return $this->hasMany('App\Log', 'user_id', get_called_class() !== get_class() ? 'user_id' : 'id');
}