Если в используете PostgreSQL, я бы рекомендовал использовать advisory locks (см.
https://www.postgresql.org/docs/current/static/exp..., в конце страницы). По сути, это реализация мьютексов на уровне базы данных.
Трейт для PHP, использующий advisory locks, можно посмотреть здесь:
https://gist.github.com/dfbag7/75dcd78a33a6a6d8b61... Этот трейт можно подключать к классам моделей. Также см. реализацию scope:
https://gist.github.com/dfbag7/75a0a1ca843e5e14258... Код проверялся (и реально используется) в Laravel 4.2.