Reverse relation - I'm doing my best, but it isn't working

Author Message

Aleksander Lech

Wednesday 04 January 2006 2:12:11 am

Hi there

I made custom class (A) and put ezobjectrelationlist attribute there.

Then, I created another custom class (B) and populate both with sample data.

Now - object of class A contains object of class B. If I understand it correctly - object of class B is related to object of class A.

I'm trying to display reverse relation - I mean display object of A in object of class B template file using:

{* 189 is $node.contentobject_id *}
{def $objects=fetch( 'content', 'reverse_related_objects',
                     hash( 'object_id', 189 ) )}

{$objects|attribute('show')}
{foreach $objects as $object}
    {$object.name|wash} <br />
{/foreach}

And as you probably guess, it returns nothing.

:(

Aleksander Lech

Wednesday 04 January 2006 2:32:53 am

I found something weird:
This SQL is generated according to reverse_related_objects fetch:

SELECT DISTINCT
    ezcontentobject.*
FROM
    ezcontentobject, ezcontentobject_link
WHERE
    ezcontentobject.id=ezcontentobject_link.from_contentobject_id
AND
    ezcontentobject.status=1
AND
    ezcontentobject_link.to_contentobject_id=285
AND
    ezcontentobject_link.from_contentobject_version=ezcontentobject.current_version
AND
    contentclassattribute_id=0

What is the reason of last two lines? Without it, SQL returns correct data.

Massimiliano Bariola

Wednesday 04 January 2006 2:33:25 am

Hi Alex,

no, a "contains" relationship is not a "relation" relationship. think about the first as folder/file , and the second as "link from A to B".

in admin view, contianed entities are shown indented with respect to their container, as a hiaerarchical tree. Related objects are shown under the detail of the object (lower-center part of the page).

at any rate, try to add a

{$object|attribute(show, X)}

with X = depth of inspection (1 ..... infinite) within your loop and see what exactly object contains.

HTH

Max

Aleksander Lech

Wednesday 04 January 2006 2:47:46 am

Hi Massimiliano,
I did:

{$objects|attribute('show',2)}

But it returns just table header:
Attribute Type Value

And nothing more

Aleksander Lech

Wednesday 04 January 2006 3:29:32 am

Gotcha!

I make it work :) and here's the difference:
Doesn't work:

{def $objects=fetch( 'content', 'reverse_related_objects',
                     hash( 'object_id', $node.contentobject_id) )}

Works:

{def $objects=fetch( 'content', 'reverse_related_objects',
                     hash( 'object_id', $node.contentobject_id,
                            'attribute_identifier', 410) )}

'410' is id of attribute which I wanted to show, but I wonder - if there is a way to display ALL reverse-related objects?

Aleksander

Xavier Dutoit

Thursday 05 January 2006 3:01:31 am

Hi,

Have a look at this discussion that occured when building the fetch method you're using:
http://ez.no/community/forum/general/object_relations

Kristof came up with an extension that solved most of the problems:

http://ez.no/community/contribs/hacks/advanced_content

I don't remember the details, but I'm sure having a look at it will brings you the solution.

Keep us informed about how you've solved your pb.

X+

http://www.sydesy.com

Kristof Coomans

Thursday 05 January 2006 3:18:24 am

You can use the "all_relations" parameter if your eZ publish version is up to date. I don't exactly know when it was added.

For more information, see http://pubsvn.ez.no/nextgen/trunk/doc/features/3.6/related_objects_fetch_functions.txt

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Xavier Dutoit

Thursday 05 January 2006 4:14:03 am

Now that Kristof mention it, he came with the solution with a patch more than an extension.

Resolution for next year: do something to improve my memory ;)

X+

http://www.sydesy.com

Kristof Coomans

Thursday 05 January 2006 7:10:49 am

No, you were right, my temporary solution was an extension ;-)

independent eZ Publish developer and service provider | http://blog.coomanskristof.be | http://ezpedia.org

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.