Не могу получить по ID элемент в аргументе из базы данных Laravel

Рейтинг: 0Ответов: 1Опубликовано: 27.04.2023

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

API Routing:

Route::group(['prefix' => 'v1', 'namespace' => 'App\Http\Controllers\Api\V1', 'middleware' => 'auth:sanctum'], function () {

    Route::apiResource('achievements', AchievementsController::class);

    Route::post('logout', [\App\Http\Controllers\Api\V1\Auth\LogoutController::class, 'logout']);
});

Контроллер:

public function update(UpdateAchievementsRequest $request, Achievements $achievements)
{
    $credentials = $request->all();
    return [
        'req' => $credentials,
        'achi' => $achievements
    ];
}

Отправка API:

async actionEditAchievement(data, id){
        return await new Promise((resolve, reject) => {
            axios.get(useRuntimeConfig().public.base + 'sanctum/csrf-cookie', {withCredentials: true})
                .then(() => {
                    axios
                        .put(useRuntimeConfig().public.baseApi + 'achievements/' + id, data,{
                                headers: {
                                    'Accept': 'application/json',
                                    'Authorization': `${this.getCurrentUser.token_type} ${this.getCurrentUser.token}`
                                }
                            })
                        .then((res) => {
                            console.log(res);
                            resolve('Достижение изменено');
                        })
                        .catch(() => {
                            reject('Бро, как???');
                        });
                });
        });
    },

Ответы

▲ 1Принят

Дублирую сказанное @radar4ick -

Посмотрите доступные роуты через php artisan route:list, я подозреваю, что ищется модель в единственном числе Achievement, а у вас модель названа с 's' на конце - это противоречит концепции CRUD в Laravel

P.s это оказалось решением проблемы, простая замена названия модели с Achievements на Achievement