Посеять отношения один ко многим

Я создаю API (Laravel 5) для RPG-игры и пытаюсь заполнить данные.

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

Глядя через 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']);
}

2

Решение

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

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

Другие решения

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

1

По вопросам рекламы [email protected]