我正在尝试将“项目模型”附加到“事件模型”。
项目模型:
public function events()
{
return $this->belongsToMany('App\Event', 'event_item');
}
事件模型
public function items()
{
return $this->belongsToMany('App\Item', 'event_item');
}
用户模型
public function items()
{
return $this->hasMany('App\Item', 'user_id');
}
EventsController
public function store(Request $request)
{
// Get user
$user = $request->user();
// Create event
$event = Event::create(array_merge($request->all(), ['user_id' => $user->id]));
// Attach items to event
$user->items()->attach($event->id);
}
我的用户有多个项目。所有用户项目都必须附加到存储功能上的事件。 我收到此错误,方法Illuminate \ Database \ Query \ Builder :: attach不存在。
答案 0 :(得分:0)
用户模型:
return $this->hasMany('App\Item', 'item_id');
答案 1 :(得分:0)
您的User model
项目函数必须返回BelongsToMany关系才能使用attach()。
用户模型:
public function items() {
return $this->belongsToMany('App\Item');
}
答案 2 :(得分:0)
我能够弄清楚这一点,实际上是个容易犯的错误。我想将项目附加到事件中,但是在我最初的问题中,我让用户附加到项目中。
更改了此内容
// Attach items to event
$user->items()->attach($event->id);
对此:
// Attach items to event
$event->items()->attach($user->items);
现在按预期工作。