Re: DataObjects joins
| From: | Justin Patrin | 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