我正在为RPG游戏创建API(Laravel 5),并且正在尝试播种数据。
每个级别包含许多任务,每个任务属于一个级别。
通过Laravel docs查看,我只看到插入相关模型数据的关系:一个(associate
)和许多:多个(sync, attach
),但示例中没有任何内容一个:很多(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']);
}
答案 0 :(得分:4)
您可以使用save()
方法,如@Mithredate所述。
foreach ($levels as $level) {
$quest->levels()->save($level);
}
答案 1 :(得分:1)
使用雄辩的save()
方法。您可以找到文档here