2015-09-26 3 views
2

Я создаю API (Laravel 5) для игры в RPG и пытаюсь засеять данные.Взаимодействие от одного до большого числа

Каждый уровень содержит много квестов, и каждый квест принадлежит к одному уровню.

Просматривая Laravel docs, я вижу только отношения для вставки данных, относящихся к модели для одного: один (associate), и много: много (sync, attach), но ничего на примере одного: многие (level has many quests, but quests only have one level).

Вы можете видеть ниже в посеве, что я пытаюсь случайным образом связать несколько квестов с уровнями. Я также попытался attach и sync но получить ошибки

Вызов неопределенной метод Осветите \ Database \ Query \ Builder :: адъюнкт()

и

Призыв к неопределенным метод Illuminate \ Database \ Query \ Builder :: attach()

Модель уровня:

public function quests() 
{ 
    return $this->hasMany(Quest::class); 
} 

Quest модель:

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']); 
    } 

ответ

2

Вы можете использовать метод save(), как указано в @Mithredate.

foreach ($levels as $level) { 
    $quest->levels()->save($level); 
} 
0

Используйте красноречивым save() метод. Вы можете найти документацию here