INSERT INTO `loginHistory`(`userId`, `createdAt`)
VALUES (:userId, CURRENT_TIMESTAMP());
UPDATE `loginHistory`
SET `isDeleted` = 1
WHERE `userId` = :userId
ORDER BY `id` ASC
OFFSET 5;
SELECT
`id`,
`userId`,
`createdAt`
FROM `loginHistory`
WHERE `userId` = :userId
AND `isDeleted` = 0
ORDER BY `id` ASC;
eloquent - это active record, + под ним относительно нормальный query builder.
А доктрина - она часто оверкилл
её собственный sql подобный язык, не очень поддерживаемый IDE разными
Как я понимаю, мне не нужно волноваться что-то операция закрытия записи на чтение произойдет после чтения этой записи ?
если запрос на закрытие не успеет выполниться, а в это время произойдет чтение ?
почему из байт-кода?!
Emscripten — компилятор LLVM-байткода в код JavaScript, который может быть запущен в веб-браузере. LLVM-байткод может быть получен из исходного кода на языке C или C++.
Haxe — это высокоуровневый мультиплатформенный язык программирования с открытым исходным кодом, а также компилятор, с помощью которого можно создавать приложения и генерировать исходный код для разных платформ, сохраняя единую кодовую базу.
Часть стандартов PSR, определяющих общие интерфейсы, тот же PSR-7 например, дают вам возможность отвязаться от конкретного вендора, как следствие ваш код становится более лучше переносимым. Это замечательно, но задача перехода от одного вендора к другому возникает очень редко, как минимум потому, что она обычно очень затратная по времени.
И вот тут возникает два очень важных момента:
1. Подобные стандарты PSR очень общные, вендорные решения часто имеют больше функциональности.
2. И PSR и вендорные решения устаревают, вам в любом случае придется тратить время на поддержку что первого, что второго. Разница лишь в том, что с некоторыми PSR-ами вы более ограничены.