ZF1中的特定类别

时间:2014-10-23 03:31:58

标签: zend-framework zend-db-table

我有这个型号:

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的新用户,所以如果您还看到我在控制器中错误地获取数据,请告诉我们。谢谢

1 个答案:

答案 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 **/

}

希望有所帮助