toSql() 메소드

아래와 같은 식으로 get()/first()/all() 등이 들어가는 위치에 쓰면

User::where('real_name', '=', $name)->toSql();

모델에 질의한 것이 SQL 쿼리문장으로 어떻게 변환됐는지 문자열로 리턴해줍니다.

'select * from `CleanStat_users` where `real_name` = ?'

공식문서에서는 구경 못했던 것 같은데, Code Bright 책 읽다보니 이 메소드가 나와서 이런게 어디 숨어있었나 하고 소스 찾아보니(공식 API 페이지에서의 검색기능은 메소드 이름 검색은 안되더라구요), Illuminate\Database\Query\Builder.php 에 있더군요. (링크)

SQL문이 궁금할때 보통은 프로파일러에서 SQL 쿼리로그 보는데, 정작 예외가 떠서 어디가 문제인지 찾고 싶을때는 프로파일러가 실행이 안되서 불편했는데, 이걸로 문자열 얻어서 로그로 찍을 수 있으니 가려운 부분이 해결이 되네요.

comments powered by Disqus