I developed typeorm
querybuilder
. For the purpose of debugging, I’d like to show the generated SQL query.
I tested printSql()
method, but it didn’t show any SQL query.
const Result = await this.attendanceRepository .createQueryBuilder("attendance") .innerJoin("attendance.child", "child") .select(["attendance.childId","child.class","CONCAT(child.firstName, child.lastName)"]) .where("attendance.id= :id", { id: id }) .printSql() .getOne() console.log(Result);
It returned the following:
Attendance { childId: 4, child: Child { class: 'S' } }
My desired result is to get the generated SQL query.
Is there any wrong point? Is there any good way to get the SQL query?
Advertisement
Answer
.getQuery()
or .getSql()
const sql1 = await this.attendanceRepository .createQueryBuilder("attendance") .innerJoin("attendance.child", "child") .select(["attendance.childId","child.class","CONCAT(child.firstName, child.lastName)"]) .where("attendance.id= :id", { id: id }) .getQuery(); console.log(sql1);
const sql2 = await this.attendanceRepository .createQueryBuilder("attendance") .innerJoin("attendance.child", "child") .select(["attendance.childId","child.class","CONCAT(child.firstName, child.lastName)"]) .where("attendance.id= :id", { id: id }) .getSql(); console.log(sql2);