[英]Seeding one to many relationship
我正在为RPG游戏创建API(Laravel 5),并试图播种数据。
每个级别包含许多任务,并且每个任务都属于一个级别。
查看Laravel文档 ,我只看到用于为one:one( associate
)和many:many( sync, attach
)插入相关模型数据的关系,但是对于one:many( level has many quests, but quests only have one level
)。
您可以在下面的种子中看到,我正在尝试将多个任务随机关联到各个关卡。 我也尝试attach
和sync
但收到错误
调用未定义的方法Illuminate \\ Database \\ Query \\ Builder :: associate()
和
调用未定义的方法Illuminate \\ Database \\ Query \\ Builder :: attach()
级别模型:
public function quests()
{
return $this->hasMany(Quest::class);
}
任务模型:
public function levels()
{
return $this->belongsTo(Level::class);
}
播种机:
public function run()
{
Eloquent::unguard();
$levels = $this->createLevels();
$quests = Quest::all()->toArray();
/*
* Randomly join level id with associated quest ids
*/
foreach ($levels as $level) {
$level->quests()->associate($quests[rand(0, count($quests) - 1)]['id']);
}
您可以使用@Mithredate声明的save()
方法。
foreach ($levels as $level) {
$quest->levels()->save($level);
}
使用雄辩的save()
方法。 您可以在这里找到文档
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.