Laravel - Оптимизация запросов к базе данных

Я пытаюсь правильно использовать ORM Laravel и правильно моделировать свою базу данных.

Рассмотрите следующую схему:

введите описание изображения здесь

Я хочу обновить статус любых "подсессий" через конечную точку, которую я создаю. Кроме того, для этого пользователь должен быть аутентифицирован и владеть объектом "store".

http://my-api/sub-sessions/1/status [PUT]

Как вы могли догадаться, "1" в пути к конечной точке на самом деле является идентификатором моего объекта подсеанса.

Таким образом, вызов этого URL с правильным параметром должен обновить статус моего подсеанса, только если я действительно владею хранилищем с учетной записью, с которой я аутентифицирован.

Чтобы проверить, действительно ли "sub_sessions" связаны с "sessions", которые сами по себе связаны с хранилищем, связанным с текущей учетной записью, я делаю следующее:

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

Как мне оптимизировать все это?

$subSessionId = 1; // Path argument of the URL http://my-api/sub-sessions/1/status

$account = $request->user(); // User is authenticated, always
$subSessionExist = SubSessions::filter()->withWhereHas('sessions', fn($query) =>
       $query->withWhereHas('store', fn($query) =>
         $query->where('owner_id', '=', $account->id)
))->get()->first()['id'] == $subSessionId;
Каллистрат
Вопрос задан4 августа 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.