zend relationships with select

前端 未结 2 1833
醉话见心
醉话见心 2021-01-06 03:47

I am new to zend. I have been asked to redevelop a website that was once written in plain PHP and put it into the zend framework.

I am having a lot of trouble with d

相关标签:
2条回答
  • 2021-01-06 03:55

    First, if you're searching for a category by its primary key, it's simpler to use the find() method:

    $id = (int) $this->_request->getParam('id');
    $category = new Default_Model_Categorys();
    $this->view->category = $category->find($id)->current();
    

    Second, to restrict or sort dependent Category_Info rows, you can use a Zend_Db_Table_Select object as an optional parameter of findDependentRowset(). Here's an example:

    $select = $category->select()->where("info_type = 'PRICE'")
                                 ->order("info_date")
                                 ->limit(3);
    $categoryInfo = $this->view->category->findDependentRowset(
        'Default_Model_CategoryInfo', null, $select);
    

    Notice you can use any table object to create that select object. Since the "FROM" clause for that select will be set by the findDependentRowset() method, you just add other clauses and then pass it in.

    PS: You don't need to declare $_dependentTables at all, unless you're going to use cascading update or cascading delete via PHP code. I recommend strongly against doing that -- it's far more efficient to let the RDBMS handle those cascading operations.

    Likewise you should never have to declare $_primary if your database tables actually declare primary key constraints. Zend_Db_Table_Abstract knows how to inspect metadata to get the primary key column(s).

    0 讨论(0)
  • 2021-01-06 03:55

    Everything looks correctly to me. You don't query a dependent rowset. It is a query itself and it returns a result set. Basically what it is doing is pulling all records related to the current row you are working with as defined by $_referenceMap. Once you execute findDependentRowset(), you can foreach over the results which will give you instances of Zend_Db_Table_Row. From there you can display the related data as needed.

    Personally I don't use Zend_Db Relationships. It is much easier to just make a second model method to query what I need. Also, Zend_Db Relationships do not support where clauses, so just making a second query is much more flexible than relationships.

    0 讨论(0)
提交回复
热议问题