EllisLab text mark
Advanced Search
     
DataMapper: Find with No Related Objects
Posted: 19 November 2012 07:56 PM   [ Ignore ]
Joined: 2012-11-05
7 posts

Hello, world!

My CodeIgniter/DataMapper site needs to display a list of categories. Each category has a many-to-many relationship with itself, for multiple parents/children. I want to initially select only the categories with with no parents, or in other words, with no objects connected through a specified relationship.

I’ve run through a couple of possibilities (like including the related object count in the select and adding it to the where clause, which doesn’t work because WHERE is evaluated before generating the column values in SQL), but to no avail.

Advice? Thank you.

 
Posted: 19 November 2012 08:30 PM   [ Ignore ]   [ # 1 ]   [ Rating: 0 ]
Avatar
Joined: 2008-11-04
4405 posts

Have you looked at http://datamapper.wanwizard.eu/pages/troubleshooting.html#Relationships.NotRelated ?

 Signature 

Me: WanWizard.eu | My company: Exite | Datamapper: DataMapper ORM

 
Posted: 21 November 2012 01:14 PM   [ Ignore ]   [ # 2 ]   [ Rating: 0 ]
Joined: 2012-11-05
7 posts

Not quite, I don’t want to check if it’s not related to a specific object, I wanted get ones that aren’t related to any objects at all.  I did resolve it by doing this:

$c = new Category();

$top_level_categories $c
    
->where_related_parents('id IS NULL')
    ->
get(); 

If it’s an integer auto-increment column, no values will actually be NULL, but if there are no related rows in the join, it will come out as NULL.