我有两种类型的用户:User
和SuperUser
。 SuperUser
旨在从User
继承,并具有其他属性和功能。例如,User
有一个name
; SuperUser
有name
和surname
。但是,当我尝试在SuperUsers
表中插入某些内容时,它不会插入它 - 而是发生错误并且未插入。
$user= new SuperUser;
$user->name = "Foo";
$user->surname = "Bar";
$user->save();
答案 0 :(得分:1)
查看代码时,我猜测您所获得的错误与Eloquent尝试将对象保存在不存在的表中有关。
当你定义一个Eloquent模型时,Eloquent假设这个模型应该存储在一个与模型同名的表中,但是以蛇形和复数形式存储。因此,当您尝试保存用户对象时,它会尝试将其保存在用户表中,但是当您尝试保存超级用户对象时,Eloquent尝试将其保存在 super_users 表中。
如果您希望拥有代表用户层次结构的类层次结构,但希望将所有这些层次结构保存到同一个表中,则需要在公共父模型类中定义表名 - 用户在你的情况下。您可以通过将值设置为$ table variable:
来实现class User extends Model {
protected $table = 'users';
}