Re: DataObjects joins

From: Date: Fri, 28 Jan 2005 20:50:57 +0000
Subject: Re: DataObjects joins
References: 1 2 3 4 5  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-17261@lists.php.net to get a copy of this message
\On Fri, 28 Jan 2005 14:49:22 -0500, James Stewart <lists@jystewart.net> wrote: > > On Jan 28, 2005, at 1:51 PM, Justin Patrin wrote: > > > On Fri, 28 Jan 2005 13:43:10 -0500, James Stewart > > <lists@jystewart.net> wrote: > >> On Jan 28, 2005, at 1:29 PM, Justin Patrin wrote: > >>> On Fri, 28 Jan 2005 13:14:45 -0500, James Stewart > >>> <lists@jystewart.net> wrote: > >>>> $staff = DB_DataObject::factory('member'); > >>>> $attendance = DB_DataObject::factory('staff_conference'); > >>>> $position = DB_DataObject::factory('position'); > >>>> $staff->joinAdd($attendance); > >>>> $staff->joinAdd($position); > >>>> > >>>> $position->school = $college_id; > >>>> $position->whereAdd('end_date IS NULL'); > >>>> > >>>> $staff->find(); > >>>> > >>>> and the error I'm seeing is: > >>>> > >>>> joinAdd: staff_conference has no link with member > >>>> > >>>> my <dbname>.links.ini file contains: > >>>> > >>>> [staff_conference] > >>>> member_id = member:id > >>>> member_id = registration:registrant > >>>> member_id = position:member > >>>> > >>>> Through a little digging around I discovered that DB_DataObject is > >>>> only > >>>> recognising the last link where there are several from the same > >>>> field > >>>> in the originating table. Can anyone recommend a way around this? > >>>> > >>> > >>> Ummm...how are you expecting that to work? One field can only link to > >>> one table. Sounds like the first one is the real one (member_id links > >>> to member:id) and the other two should be set up in the other tables > >>> > >>> [registration] > >>> registrant = member:id > >> > >> I'm linking that field with different tables depending on the context. > >> In some cases the registrant is a member, but in others they're a > >> guest > >> and so linked with another table. Where necessary, I use > >> registration.reg_type to check that. > >> > > > > Well...this isn't possible with the normal links.ini setup. It only > > allows for one link per field. After all, how would DO know which you > > meant when you called $do->getLink('member_id')? > > > > You may want to check out my Dynamic Links idea: > > > > http://opensource.21st.de/tiki-index.php?page=Beyond+Advanced#id921023 > > Looks interesting. I'll definitely have to look into that when time > allows. In the meantime... > > > If you don't want to do something like that, I'd suggest putting only > > one link in the links.ini and then, if you're doing joinAdd, give it > > the additional info in the other parameters to make the link. > > Do you mean I can build a link without it being mentioned in the > links.ini file? Could you give an example of how that might work? My > initial attempt of: > > $staff = DB_DataObject::factory('member'); > $attendance = DB_DataObject::factory('staff_conference'); > > $attendance->joinAdd($staff,'','','member_id'); > > resulted in the same error as before. > Try putting the parameters in those other two parameters. -- Justin Patrin

« previous php.pear.general (#17261) next »