Невозможно сохранить в базе данных с помощью Laravel Api

У меня есть много-много настроек отношений в моем приложении laravel

В моем User Model, Я установил свои отношения

public function categories()
{
    return $this->belongsToMany(Category::class)->withTimestamps();
}

В моей "Категориальной модели" я установил свои отношения

public function users()
{
    return $this->belongsToMany(User::class)->withTimestamps();
}

В моем pivot таблица с именем categoryuser У меня есть эта схема таблицы

public function up()
{
    Schema::create('category_user', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->integer('category_id')->unsigned();
        $table->integer('user_id')->unsigned();
        $table->timestamps();
    });
}

Я пытаюсь добавить для сохранения в сводную таблицу с помощью этого метода

public function categoryUserapi (Request $request)
{

    $validatedData = $request->validate([
      'category_id' => 'required|array|min:3',
      'category_id.*' => 'integer',
  ]);
  $user = Auth::user();
  $user->categories()->attach($request->input('category_id'));

  return response(['user'=> $user]);
}

Но это не работает, я не знаю, что делаю не так

В моем api.php у меня есть это

Route::post('/onboardcategory', 'OnboardsController@categoryUserapi');

ОБНОВИТЬ

Он вернул ошибку

"message": "Вызов функции-члена category () при null"

1 ответ

Решение

Измените Auth::user на User::find, если вы передаете идентификатор пользователя

public function categoryUserapi (Request $request)
{


  $user = User::find($request->user_id);
  $user->categories()->attach($request->input('category_id'));

  return response(['user'=> $user]);
}
Другие вопросы по тегам