Получение запроса, который создал коллекцию Doctrine_Collection - PullRequest
0 голосов
/ 02 июля 2010

У меня есть Doctrine_Collection объект, который был создан с кодом, похожим на.

$collection = Doctrine_Query::create()
->from('FooBazBar')
->where('widget_id = ?',$some_var)
->execute();

Если не считать его где-нибудь, можно ли извлечь предложение where, которое использовалось для создания коллекции?

То есть я хочу иметь возможность что-то вроде

$collection->getWhereClauses(); //fake method

И верните предложение where в некоторой форме.

Определенное «нет, это не раскрывается через API» с объяснением - вполне разумный ответ.

Ответы [ 2 ]

1 голос
/ 02 июля 2010

Нет, это не раскрывается через API.

Если серьезно, вы не можете получить запрос, который сгенерировал коллекцию Doctrine_Collection.Самый простой способ сделать это - создать метод в вашей таблице, например:

//FooTable.php
public function findByWidgetQuery()
{
return $this->createQuery('foo')
  ->where('foo.baz = ?', 'bar');
}

И затем вы можете использовать getDqlPart () следующим образом:

$where = Doctrine_Core::getTable('Foo')
->findByWidgetQuery()
->getDqlPart('where');

Это должно дать ваммассив, подобный этому:

array(2) { [0] => string(8) 'widget = ?' [1] => string(10) 'widget = ?' }

Обратите внимание, что он не возвращает фактическое значение, переданное предложению where ().Для этого вам нужно использовать Doctrine_Query :: getParams () или Doctrine_Query :: getFlattenParams ()

Вы можете найти все в Doctrine API .

0 голосов
/ 02 июля 2010

getSqlQuery () выглядит как метод, который вам нужен ...

http://www.doctrine -project.org / Documentation / manual / 1_0 / en / dql-doctrine-query-language: отладка-запросов

...