我正在尝试在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()
方法实际上不存在,文档是错误的,但我觉得很难相信。
简而言之,在Eloquent中创建多对多关系的正确方法是什么?
items()
方法中的代码。 - Joseph Silber