【发布时间】:2015-10-28 01:54:00
【问题描述】:
我有一个名为 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');
但供应商的加载调用失败。我能够加入供应商内部用户的字段,但我还需要它的功能。
【问题讨论】:
-
尝试为供应商加载日志时遇到什么错误?
-
Column not found: 1054 Unknown column 'logs.vendor_id' in 'where 子句' (SQL: select * from
logswherelogs.vendor_idin (1)),但我修好了。
标签: laravel model eloquent subclass