【发布时间】:2017-01-08 19:40:50
【问题描述】:
使用 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?
-
是的,它确实工作正常并返回一个 id。
-
那么你的 car create 方法不会给 id 字段赋值。
-
Create 是一个静态方法,属于 Laravel 继承的 eloquent 模型。假设它是一个自动递增的主键,它可能会跳过任何名为“id”的字段。
标签: php mysql laravel-5.3