Php “拉雷维尔”;未定义的方法\Database\Query\Builder::attach();

Php “拉雷维尔”;未定义的方法\Database\Query\Builder::attach();,php,laravel,eloquent,Php,Laravel,Eloquent,我试图在Laravel4中的数据库种子设定期间关联相关模型。根据文档,我可以这样做: $user->roles()->attach(1); 因此,在我的数据库seed中,我正在运行: $package = Package::create([ 'name' => $faker->word, 'summary' => $faker->sentence, 'base_price' => $faker->randomFloat(2

我试图在Laravel4中的数据库种子设定期间关联相关模型。根据文档,我可以这样做:

$user->roles()->attach(1);
因此,在我的数据库seed中,我正在运行:

$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在雄辩中创建多对多关系的正确方法是什么?

您的包中的函数
items()
必须返回belongTomany关系才能使用


您没有向我们显示
items()
方法中的代码。就是这样。我认为hasMany和belongdomany被用于多对多的关系中——实际上,正如你所说的,双方都属于对方。
public function items() {
  return $this->belongsToMany('Item');
}