Laravel 雄辩模型有父模型
我有一个名为User的模型,里面有名字、国家和一些关系 现在我想要一个模型,例如供应商,拥有与用户相同的函数和变量,包括更多的东西 我想我可以做到这一点:Laravel 雄辩模型有父模型,laravel,model,eloquent,subclass,Laravel,Model,Eloquent,Subclass,我有一个名为User的模型,里面有名字、国家和一些关系 现在我想要一个模型,例如供应商,拥有与用户相同的函数和变量,包括更多的东西 我想我可以做到这一点: class User extends Model implements AuthenticatableContract { use Authenticatable; SoftDeletes; protected $dates = ['deleted_at', 'last_login']; protected $f
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');
}
尝试加载供应商的日志时出现了什么错误?未找到列:“where子句”(SQL:select*from
logs
wherelogs
vendor\u id
in(1))中的1054未知列“logs.vendor\u id”),但我已将其修复。