使用mySql,我创建了3个表:vehicles
,cars
和bikes
。
表cars
和bikes
是表vehicles
(子表)的特殊化。vehicles
有一个称为id
的主键。cars
和bikes
没有主键。相反,它们还有一个名为id
的字段,上面带有一个索引,其中包含与vehicles.id
相同的值以用作外键。
我正在尝试使用Laravel 5.3框架,首先将新记录插入vehicles
中,然后将新记录插入cars
中,如下所示:
$id = Vehicle::create(['name'=>'volvo'])->id;
Car::create(['id'=>$id, 'nbDoors'=>4]);
我收到以下错误:
Connection.php第770行中的QueryException:
SQLSTATE [HY000]:常规错误:1364字段“ id”没有默认值(SQL:插入到
cars
(nbDorrs
)值(3))是否有解决方案或更好的数据库设计,以便我可以在两个表中插入数据并保持这种专业化?
最佳答案
找到了解决方案:
我只是省略了将id添加到Car模型的可填充列中!
class Car extends Model
{
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['id', 'nbDoors'];
关于php - Laravel的表特化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41525891/