如何修复错误方法Illuminate \ Database \ Query \ Builder :: attach不存在。附加多个项目

时间:2019-05-10 01:36:11

标签: laravel laravel-5.7

我正在尝试将“项目模型”附加到“事件模型”。

项目模型:

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不存在。

3 个答案:

答案 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);

现在按预期工作。