Doctrine Query Language(DQL) is an Object Query Language created for helping users in complex object retrieval. You should always consider using DQL(or raw SQL) when retrieving relational data efficiently (eg. when fetching users and their phonenumbers).

When compared to using raw SQL, DQL has several benefits:
If the power of DQL isn't enough, you should consider using the rawSql API for object population. Standard DQL query consists of the following parts:
In BNF syntax, a select statement is defined as: select_statement :: = select_clause from_clause [where_clause] [groupby_clause] [having_clause] [orderby_clause]
A select statement must always have a SELECT and a FROM clause. The square brackets [] indicate that the other clauses are optional.