Eloquent 模型有父模型
Eloquent Model has parent model
我有一个名为 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');
}
控制器检查用户的角色并加载用户模型或供应商模型:
if(Auth::user()->role > 1)
$user = Vendor::where('user_id', Auth::user()->id)->first();
else
$user = Auth::user();
return $user->load('logs');
但是供应商的加载调用失败。我能够在供应商内部加入用户的字段,但我也需要它的功能。
问题是日志函数检查了一个不存在的字段。
使用此功能有效:
public function logs()
{
return $this->hasMany('App\Log', 'user_id', get_called_class() !== get_class() ? 'user_id' : 'id');
}
我有一个名为 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');
}
控制器检查用户的角色并加载用户模型或供应商模型:
if(Auth::user()->role > 1)
$user = Vendor::where('user_id', Auth::user()->id)->first();
else
$user = Auth::user();
return $user->load('logs');
但是供应商的加载调用失败。我能够在供应商内部加入用户的字段,但我也需要它的功能。
问题是日志函数检查了一个不存在的字段。 使用此功能有效:
public function logs()
{
return $this->hasMany('App\Log', 'user_id', get_called_class() !== get_class() ? 'user_id' : 'id');
}