2013-03-12 3 views
4

мне интересно, что именно плюсы использования доктрины для построения запросов, таких как:Какова цель построения запросов 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')); 

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

ответ

0

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

+0

Спасибо, но что вы подразумеваете под «структурным»? Также код SQL по-прежнему здесь, вы можете почти перестроить весь запрос, объединив все строки. Например, столбцы не являются OrderBy (столбец $ table->, ASC), но все равно «u.name». То же самое для псевдонимов, оно по-прежнему находится в форме «псевдоним столбца». – Virus721

+1

Говоря структурно, я имею в виду, что вы видите только вызовы методов. Нет кода SQL, есть методы вызова. Да, все это только вопрос вкуса. Но мне больше нравится, когда мои запросы больше похожи на обычные конструкции объектно-ориентированного программирования, чем строки с синтаксисом DQL или SQL. –

Смежные вопросы