我有一个Doctrine_Collection
对象是使用类似的代码创建的。
$collection = Doctrine_Query::create()
->from('FooBazBar')
->where('widget_id = ?',$some_var)
->execute();
如果没有在某处写下来,是否可以检索用于创建集合的where子句?
也就是说,我希望能够像
这样的东西$collection->getWhereClauses(); //fake method
以某种形式取回where子句。
一个明确的“不,这不是通过API公开”并附带解释是一个非常合理的答案。
答案 0 :(得分:1)
不,这不是通过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 :: getFlattenedParams()
您可以在Doctrine API。
中找到所有内容答案 1 :(得分:-1)
getSqlQuery()看起来像你正在追求的方法......