select
`agreement_types`.*,
exists(select * from `agreement_profile` where `agreement_types`.`last_agreement_id` = `agreement_profile`.`agreement_id` and `profile_id` = ?) as `last_agreement_approved`
from `agreement_types`
where
`last_agreement_id` is not null
and `last_agreement_approved` = ?
order by
`name` asc
который падает с
Unknown column 'last_agreement_approved' in 'where clause'
, надо делать отдельный скоуп
public function scopeWhereLastNotApprovedByProfile(Builder $query, string $profileId): void
{
$query->whereDoesntHave('lastApproved', function ($q) use ($profileId) {
$q->where('profile_id', $profileId);
})
}
тогда exists переедет в where:
select
`agreement_types`.*
from `agreement_types`
where
`last_agreement_id` is not null
and not exists (select * from `agreement_profile` where `agreement_types`.`last_agreement_id` = `agreement_profile`.`agreement_id` and `profile_id` = ?)
order by
`name` asc
вот почему бы не сделать песочницу на codepen вместо простыней кода? ну или хотя бы не убрать под их спойлер?
если что - для картинок есть https://picsum.photos/ где можно реальные размеры указать.
RomyGalaxy, ну в самом начале приложения тыкаю в бэк и определяю, залогинен или нет, кладу в стор, потом в хуке роутера beforeEach определяю, если не залогинен и маршрут требует авторизации - то запоминаю куда ломились и перенаправляю на страницу логина, затем после логина перенаправляю на исходную страницу.
Если залогинен и маршрут требует гостя (например страница регистрации), то перенаправляю на "домашнюю" страницу.
Также в axios добавлен интерсептор, который при ошибке 401 делает то же, что и при попытке незалогиненного зайти на "закрытую" страницу - запоминает, где мы есть, после логина отправляет обратно. Такое может быть если кука или токен протухли при долго открытой забытой вкладке или реализована функция "разлогинить на других устройствах"
не надо jwt для spa. jwt следует использовать только в микросервисах с горизонтальным масштабированием инстансов сервиса, да и то не всегда.
Обычные токены или даже куки в большинстве случаев лучше.
просто установите на бэкэнде http-only кукис и все. И какой-то эндпоинт, доступный только авторизованным для проверки со стороны vue. при старте =- тыкайте туда, если работает - то загружайте данные, если ошибка 401, то переходите на роут авторизации
генерит такой вот запрос:
который падает с , надо делать отдельный скоуп
тогда exists переедет в where: