Hey Simon,

PLEASE, document the feature, since i would not want it to get lost in any
later version. It is something that a lot of people (many folks on the
german forums at least!) including me were eagerly waiting for. Getting a
read-only row with joined fields is something that I missed in the ZF from
the moment I started working with it. I know I could still use the database
adapter, but I do not want to lose the comfort of using the table objects.
Sometimes, joining rows like this is very helpful. Thanks in advance for
considering to document this very useful feature.

Best regards
Tobias

2008/1/26, Simon Mundy <[EMAIL PROTECTED]>:
>
> Hi Ralf
>
> By default an 'integrity check' is performed on the select object to
> prevent joins. But you can manually override this:-
>
>     protected function _fetch(Zend_Db_Table_Select $select)
>     {
>         // extend select
>         $select->setIntegrityCheck(false);
>         $select = $this->_extendSelect($select);
>          .....
>
> This should get you back on track - it's not a documented feature, as
> creating hybrid rows doesn't truly represent the integrity of
> Zend_Db_Table. But if you do this, you will get a rowset/row that is
> read only (which I guess is what you want?).
>
> Let me know how you get on.
>
> > Hi Andi,
> >
> > it took me already half the day to track it down to this current
> > problem. I already fixed other issues but whenever I fix one issue the
> > next problem occurs.
> >
> > Basically, I implemented a feature to add some joins without using the
> > Zend_Db_Table relationship feature, simple because this feature did
> > not
> > exist when I started to extend Zend_Db_Table. I extend the _fetch()
> > method to add the joins:
> >
> > -------------------------------------------------------------------
> > abstract class Travello_Db_Table extends Zend_Db_Table_Abstract
> > {
> >    protected function _fetch(Zend_Db_Table_Select $select)
> >    {
> >        // extend select
> >        $select = $this->_extendSelect($select);
> >
> >        // return the results
> >        $stmt = $this->_db->query($select);
> >        $data = $stmt->fetchAll(Zend_Db::FETCH_ASSOC);
> >        return $data;
> >    }
> >
> >    protected function _extendSelect(Zend_Db_Table_Select $select)
> >    {
> >        // return select object
> >        return $select;
> >    }
> > }
> > -------------------------------------------------------------------
> >
> > Here is an example for one class that extends Travello_Db_Table
> >
> > -------------------------------------------------------------------
> > class Member_Model_Right extends Travello_Db_Table
> > {
> >    protected $_name = 'member_right';
> >    protected $_primary = 'right_id';
> >
> >    protected function _extendSelect(Zend_Db_Table_Select $select)
> >    {
> >        // add join for member role
> >        $select->joinLeft('member_role', 'right_role_id = role_id',
> >                          array('role_name', 'role_identifier'));
> >
> >        // return select object
> >        return $select;
> >    }
> > }
> > -------------------------------------------------------------------
> >
> > Currently, I get this exception "Zend_Db_Table_Select_Exception:
> > Select
> > query cannot join with another table". Since Zend_Db_Table_Select is
> > hardcoded throughout the Zend_Db_Table I have no idea how to work
> > around
> > this.
> >
> > So at the moment I think I need to rework my Travello_Db_Table to use
> > the build-in relationship Zend_Db_Table feature rather than my own.
> > But
> > I am not sure if the build-in Zend_Db_Table relationship feature works
> > the way I expect it to, i.e. join tables for each find(), fetchRow()
> > or
> > fetchAll() method call.
> >
> > Thanks for any help or advise.
> >
> > Best Regards,
> >
> > Ralf
> >
>
> --
>
> Simon Mundy | Director | PEPTOLAB
>
> """ " "" """""" "" "" """"""" " "" """"" " """"" "  """""" "" "
>
> 202/258 Flinders Lane | Melbourne | Victoria | Australia | 3000
> Voice +61 (0) 3 9654 4324 | Mobile 0438 046 061 | Fax +61 (0) 3 9654
> 4124
> http://www.peptolab.com
>
>

Reply via email to