Zend Basic Tutorial
Zend Forms
Zend Database
Zend Advanced
DQL stands for Doctrine Query Language, and it is:
Raw SQL:
SELECT * FROM users;
DQL:
$query = $entityManager->createQuery('SELECT u FROM Application\Entity\User u');
$result = $query->getResult();
Raw SQL:
SELECT * FROM users WHERE id > 0;
DQL:
$query = $entityManager->createQuery('SELECT u FROM Application\Entity\User u WHERE u.id > 0');
$result = $query->getResult();
With Parameter:
$query = $entityManager->createQuery('SELECT u FROM Application\Entity\User u WHERE u.id = :id');
$query->setParameter('id', 1);
$result = $query->getResult();
Raw SQL:
SELECT u.*, p.* FROM users u INNER JOIN profiles p ON u.id = p.user_id WHERE u.id > 0;
DQL:
$query = $entityManager->createQuery(
'SELECT u, p
FROM Application\Entity\User u
JOIN u.profile p
WHERE u.id > :id'
);
$query->setParameter('id', 0);
$result = $query->getResult();
Raw SQL:
SELECT * FROM users WHERE status = 'active' AND age > 18;
DQL:
$query = $entityManager->createQuery( 'SELECT u FROM Application\Entity\User u WHERE u.status = :status AND u.age > :age' ); $query->setParameters([ 'status' => 'active', 'age' => 18 ]); $result = $query->getResult();
Raw SQL:
SELECT * FROM users WHERE NOT active;
DQL:
$query = $entityManager->createQuery('SELECT u FROM Application\Entity\User u WHERE NOT u.active = true');
$result = $query->getResult();
Raw SQL:
SELECT * FROM users ORDER BY created_at DESC;
DQL:
$query = $entityManager->createQuery('SELECT u FROM Application\Entity\User u ORDER BY u.createdAt DESC');
$result = $query->getResult();
Raw SQL:
SELECT * FROM users LIMIT 10 OFFSET 20;
DQL:
$query = $entityManager->createQuery('SELECT u FROM Application\Entity\User u');
$query->setFirstResult(20)->setMaxResults(10);
$result = $query->getResult();
Raw SQL:
SELECT COUNT(*) FROM users;
DQL:
$query = $entityManager->createQuery('SELECT COUNT(u.id) FROM Application\Entity\User u');
$count = $query->getSingleScalarResult();
(Similarly for SUM, AVG, MIN, MAX)
Raw SQL:
SELECT * FROM users WHERE name LIKE '%john%';
DQL:
$query = $entityManager->createQuery(
'SELECT u FROM Application\Entity\User u WHERE u.name LIKE :name'
)->setParameter('name', '%john%');
$result = $query->getResult();
Raw SQL:
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
DQL:
$query = $entityManager->createQuery( 'SELECT u FROM Application\Entity\User u WHERE u.age BETWEEN :min AND :max' )->setParameters(['min' => 20, 'max' => 30]); $result = $query->getResult();
Raw SQL:
SELECT * FROM users WHERE id IN (1,2,3);
DQL:
$query = $entityManager->createQuery(
'SELECT u FROM Application\Entity\User u WHERE u.id IN (:ids)'
)->setParameter('ids', [1,2,3]);
$result = $query->getResult();
Raw SQL:
SELECT u.id AS user_id FROM users u;
DQL:
$query = $entityManager->createQuery( 'SELECT u.id AS user_id FROM App\Entity\User u' ); $result = $query->getResult();
Raw SQL:
SELECT * FROM users u INNER JOIN profiles p ON u.id = p.user_id;
DQL:
$query = $entityManager->createQuery( 'SELECT u, p FROM Application\Entity\User u JOIN u.profile p' ); $result = $query->getResult();
Raw SQL:
SELECT * FROM users u LEFT JOIN profiles p ON u.id = p.user_id;
DQL:
$query = $entityManager->createQuery( 'SELECT u, p FROM Application\Entity\User u LEFT JOIN u.profile p' ); $result = $query->getResult();
Raw SQL:
SELECT * FROM users u1 JOIN users u2 ON u1.manager_id = u2.id;
DQL:
$query = $entityManager->createQuery( 'SELECT u1, u2 FROM Application\Entity\User u1 JOIN Application\Entity\User u2 WITH u1.manager = u2' ); $result = $query->getResult();
Raw SQL:
SELECT status, COUNT(id) FROM users GROUP BY status;
DQL:
$query = $entityManager->createQuery( 'SELECT u.status, COUNT(u.id) FROM Application\Entity\User u GROUP BY u.status' ); $result = $query->getResult();
Raw SQL:
SELECT status, COUNT(id) as total FROM users GROUP BY status HAVING total > 1;
DQL:
$query = $entityManager->createQuery( 'SELECT u.status, COUNT(u.id) as total FROM Application\Entity\User u GROUP BY u.status HAVING total > 1' ); $result = $query->getResult();
Raw SQL:
SELECT * FROM users u WHERE EXISTS ( SELECT id FROM profiles p WHERE p.user_id = u.id );
DQL:
$query = $entityManager->createQuery( 'SELECT u FROM Application\Entity\User u WHERE EXISTS ( SELECT p.id FROM Application\Entity\Profile p WHERE p.user = u )' ); $result = $query->getResult();
Raw SQL:
SELECT * FROM users WHERE email IS NULL;
DQL:
$query = $entityManager->createQuery( 'SELECT u FROM Application\Entity\User u WHERE u.email IS NULL' ); $result = $query->getResult();
Raw SQL:
SELECT name, CASE WHEN status = 1 THEN 'Active' ELSE 'Inactive' END FROM users;
DQL:
$query = $entityManager->createQuery( 'SELECT u.name, CASE WHEN u.status = 1 THEN 'Active' ELSE 'Inactive' END FROM Application\Entity\User u' ); $result = $query->getResult();