Невозможно сохранить в базе данных с помощью 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]);
}