MySQL 기본 동작은 transaction 이 커밋되지 않아도 다른 세션에서 SELECT 가 가능한 REPEATABLE READ 입니다.
매뉴얼을 보니 만약 SELECT 도 막으려면 transaction isolation level 을 serializable 로 설정해야 한다는데 이건 eloquent orm 가 아니라 query builder 를 사용해서 날려야 하는 거 같네요.
아래 구문을 실행하면 설정이 변경됩니다.
.
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
참고로 serializable 로 설정하면 트랜잭션이 있을 때 모든 SELECT 가 봉쇄되므로 아주 심각한 성능 저하가 있을 듯 합니다.
LOCK 개념을 잘 모르는데, 라라벨 파운데이션 코드의 lockForUpdate() 메서드를 까서 READ/WRITE LOCK 모두 거는 것인지 확인해 보는 것이 좋을 것 같습니다.
lockforupdate도 해보았는데 select는 검색이 되더군요
검색해보니 select은 라라벨 지원 함수로는 다 먹히더는걸로 보이길래 혹시 pdo를 이용해서 하시분이 있으신가 해서 질문드렸습니다
더찾아봐야할것 같습니다