繁体   English   中英

播种一对多关系

[英]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 )。

您可以在下面的种子中看到,我正在尝试将多个任务随机关联到各个关卡。 我也尝试attachsync但收到错误

调用未定义的方法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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM