这是表的结构
- 表A
- 表B具有外键a_id
- 表C具有外键a_id和b_id
我正尝试在这三个表中播种雄辩的关系
下面是我的代码结构
class A extends Model
{
use HasFactory;
protected $fillable = [...];
public function b()
{
return $this->hasMany(B::class);
}
public function c()
{
return $this->hasMany(C::class);
}
}
class B extends Model
{
use HasFactory;
protected $fillable = [...];
public function c()
{
return $this->hasMany(C::class);
}
}
class C extends Model
{
use HasFactory;
protected $fillable = [...];
}
class DatabaseSeeder extends Seeder
{
public function run()
{
\App\Models\A::factory(5)
->has(\App\Models\B::factory(2))
->has(\App\Models\C::factory(1))
->create();
}
}
错误:
数据库状态[HY000]:一般错误:1364字段'b_id'没有默认值(SQL:插入到c
(... a_id
,updated_at
,created_at
)
1条答案
按热度按时间7gcisfzg1#
您的播种机将创建5个
A
模型。对于这5个
A
,它将尝试执行两项操作B
,传入a_id
。C
,传入a_id
,但不传入任何b_id
。下面是每一个
A
模型的外观。要修复它,您需要删除
has(\App\Models\C::class)
或创建一个B
模型与之关联。您需要定义
belongsTo
关系才能使其工作。x一个一个一个一个x一个一个二个x
例如
您也不能在一条语句中创建所有内容。