我正在对Symfony 1.4系统进行细微修改。我对Symfony不是很熟悉。
Doctrine模型已经设置了一对多的getter,但我需要添加一个过滤器。例如,使用Foo->getBars()
从Foo获取Bars,我想将参数传递给getBars以仅过滤X类型的Bar,即Foo->getBars('X');
基类BaseFoo
已经在setUp
方法
$this->hasMany('Foo_Bars as Bars', array(
'local' => 'foo_id',
'foreign' => 'foo_id'
));
为相当抽象的例子道歉,但真实的对象名称可能没有多大意义。
答案 0 :(得分:0)
您需要为此创建一个新查询....
在/lib/model/doctrine/foo.class.php
文件中创建一个新函数:
public function getBarsWithX($x)
{
return Doctrine_Core::getTable('Foo')->createQuery('f')
->innerjoin('f.Bar b')
->where('f.id = ?',self::_get('id'))
->andWhere('b.x = ?',$x) // Change this line to match the field name
->execute();
}
这将返回您需要的Doctrine Hydrated对象......由
调用 Foo->getBarsWithX('x);
希望有所帮助!
答案 1 :(得分:0)
当你致电$foo->getBars()
时,$ foo已经水合了。此时,您可以覆盖public function getBars()
。
但是,为什么不通过修改查询来缩小结果集呢?