Как правильно проверять наличие записей в БД?

Начал изучать Laravel и столкнулся с одной проблемкой. Имеется следующий код
/**
* @param int $category_id
* @param int $product_id
*
* @return JsonResponse
*/
public function destroy(int $category_id, int $product_id): JsonResponse
{
    $user = Auth::getUser();

    $category = $user->categories()->find($category_id);

    if (!$category) {
        return response()->json([
            'message' => 'Category not found.'
        ], 404);
    }

    $product = $category->products()->find($product_id);

    if (!$product) {
        return response()->json([
            'message' => 'Product not found.'
        ], 404);
    }

    $product->delete();

    return response()->json([
        'message' => 'Product deleted.'
    ], 200);
}


Вопрос в том, как упростить все проверки на существование записей с соответствующими id. Текущий вариант мне не нравится своей многословностью и тем, что подобный код дублируется еще в нескольких экшенах. В Symfony я бы использовал @ParamConverter, но в Laravel вроде-бы нет такой мегаудобной штуки.
  • Вопрос задан
  • 318 просмотров
Решения вопроса 1
v_decadence
@v_decadence
Route Model Binding
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Alex_Wells
@Alex_Wells
PHP/Kotlin
Есть тут такая штука =)

public function destroy(Category $category, Product $product)


Но есстественно магически находить по категориям юзера она не будет, уж такой сильной магии тут нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы