Как исправить ошибку Метод Illuminate \ Database \ Query \ Builder :: attach не существует.Прикрепление нескольких предметов - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь прикрепить "модель предметов" к "модели событий".

Модель товара:

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 голосов
/ 10 мая 2019

Ваша функция User model items должна возвращать отношение BelongsToMany, чтобы использовать attach ().

Модель пользователя:

public function items() {
      return $this->belongsToMany('App\Item');
    }
0 голосов
/ 10 мая 2019

Я смог понять это, легкая ошибка на самом деле.Я хочу прикрепить элементы к событиям, но в исходном вопросе у меня есть пользователи, прикрепляющие элементы.

Изменено это:

// Attach items to event
$user->items()->attach($event->id);

К этому:

// Attach items to event
$event->items()->attach($user->items);

Работаеткак и ожидалось.

0 голосов
/ 10 мая 2019

Модель пользователя:

 return $this->hasMany('App\Item', 'item_id');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...