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