Laravel "undefined Illuminate\Database\Query\Builder:: attach()"

Я пытаюсь связать связанные модели во время посева базы данных в Laravel 4. В соответствии с документацией здесь, я могу сделать это следующим образом:

$user->roles()->attach(1);

Итак, в моей базе данных я запускаю:

$package = Package::create([
    'name' => $faker->word,
    'summary' => $faker->sentence,
    'base_price' => $faker->randomFloat(2, 200, 10000)
]);

// Attach 1-5 randomly selected items to this package
foreach(range(1, 5) as $index)
{
    $randomItem = Item::orderBy(DB::raw('RAND()'))->first();
    $package->items()->attach($randomItem->id);
}

В этот момент уже были посеяны элементы пакетов, и они посеяны без проблем. Приведенный выше код дает это от Artisan:

[BadMethodCallException]                                              
Call to undefined method Illuminate\Database\Query\Builder::attach()

Кто-то здесь кажется, что метод attach() фактически не существует, а документы ошибочны, но я считаю, что трудно верить.

TL; DR Каков правильный способ создания отношений "много-ко-многим" в "Красноречии"?

Ответ 1

Функция items() в вашей модели Пакет должна вернуть отношения BelongsToMany, чтобы использовать attach().

public function items() {
  return $this->belongsToMany('Item');
}