Re: DataObjects joins

From: Date: Fri, 28 Jan 2005 18:51:50 +0000
Subject: Re: DataObjects joins
References: 1 2 3  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-17250@lists.php.net to get a copy of this message
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 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. -- Justin Patrin

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