Re: DataObjects joins
| From: | James Stewart | Date: | Fri, 28 Jan 2005 19:49:22 +0000 |
| Subject: | Re: DataObjects joins | ||
| References: | 1 2 3 4 | Groups: | php.pear.general |
| Request: | Send a blank email to pear-general+get-17255@lists.php.net to get a copy of this message | ||
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:Looks interesting. I'll definitely have to look into that when time allows. In the meantime...On Jan 28, 2005, at 1:29 PM, Justin Patrin wrote: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#id921023On Fri, 28 Jan 2005 13:14:45 -0500, James Stewart <lists@jystewart.net> wrote: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.$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
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. thanks. James.