我有这个型号:
class Application_Model_Categories extends Zend_Db_Table_Abstract
{
protected $_name = 'categories';
protected $_referenceMap = array(
'Stores' => array (
'columns' => 'store_id',
'refTableClass' => 'Application_Model_Races',
'refColumns' => 'id')
);
}
然后在我的控制器中:
$race = new Application_Model_Races();
$find = $this->race->find(1);
$current = $find->current();
$categories = $current->findDependentRowset('Application_Model_Categories');
这将返回所有类别。我需要应用过滤器来仅返回parentId = 0
的类别我是ZF1的新用户,所以如果您还看到我在控制器中错误地获取数据,请告诉我们。谢谢
答案 0 :(得分:0)
简单地说,
$race = new Application_Model_Races();
$find = $this->race->find(1);
$current = $find->current();
$select = $race->getAdapter()->select()->where('parentId = 0');
$categories = $current->findDependentRowset(
'Application_Model_Categories',
null,
$select
);
通过提供Zend_Db_Select
对象作为findDependentRowset
表行方法调用的第三个参数,您可以添加任意数量的条件(甚至添加限制,设置顺序......)。
修改
好吧,您应该创建一个自定义的行类,例如将其命名为Application_Model_Race
,或Application_Model_RaceRow
。
class Application_Model_RaceRow extends Zens_Db_Table_Row_Abstract
{
public function getParentCategories()
{
$select = $this->getTable()->select()->where('parentId = 0');
return $this->findDependentRowset(
'Application_Model_Categories',
null,
$select
);
}
}
在_rowClass
课程中添加Application_Model_Races
。
class Application_Model_Races extends Zend_Db_Table_Abstract
{
protected $_rowClass = 'Application_Model_RaceRow';
/** Your old code **/
}
希望有所帮助