Какова цель построителя запросов Doctrine?

Мне интересно, каковы преимущества использования доктрины для создания таких запросов, как:

<?php
// $qb instanceof QueryBuilder

$qb->select('u')
   ->from('User u')
   ->where('u.id = :identifier')
   ->orderBy('u.name ASC');
   ->setParameter('identifier', 100); // Sets :identifier to 100, and thus we will fetch a user with u.id = 100

Единственное преимущество, которое я здесь вижу, — это очистка данных и привязка параметров, что можно легко сделать с помощью PDO.

Также другой пример:

<?php
// $qb instanceof QueryBuilder

// example8: QueryBuilder port of: "SELECT u FROM User u WHERE u.id = ? OR u.nickname LIKE ? ORDER BY u.surname DESC" using Expr class
$qb->add('select', new Expr\Select(array('u')))
   ->add('from', new Expr\From('User', 'u'))
   ->add('where', $qb->expr()->orX(
       $qb->expr()->eq('u.id', '?1'),
       $qb->expr()->like('u.nickname', '?2')
   ))
   ->add('orderBy', new Expr\OrderBy('u.name', 'ASC'));

Действительно ли дополнительные зависимости стоят затрат на производительность? Приведенный выше синтаксис кажется мне более сложным, чем простая строка, содержащая запрос.


person Virus721    schedule 12.03.2013    source источник


Ответы (1)


Этот способ более структурный. Он также удаляет код DQL (или SQL) из кода PHP, который выглядит намного лучше.

person Paul Paca-Vaca Seleznev    schedule 13.03.2013
comment
Спасибо, но что вы подразумеваете под структурным? Кроме того, код SQL все еще здесь, вы можете почти перестроить весь запрос, объединив все строки. Столбцы, например, это не OrderBy($table-›column, ASC), но все же u.name. То же самое для псевдонимов, он по-прежнему находится в псевдониме столбца формы. - person Virus721; 13.03.2013
comment
Говоря «структурный», я имею в виду, что вы видите только вызовы методов. Нет кода SQL, есть вызов методов. Да - все это лишь дело вкуса. Но мне больше нравится, когда мои запросы больше похожи на обычные конструкции объектно-ориентированного программирования, чем на строки с синтаксисом DQL или SQL. - person Paul Paca-Vaca Seleznev; 15.03.2013