Welcome Guest, Not a member yet? Register   Sign In
DataMapper: count on more than one related object
#1

[eluser]Genki1[/eluser]
For an already retrieved object, is there a "built-in" function to count the number of related objects from multiple relationships?

DataMapper has a nice function to count a single relationship (http://datamapper.wanwizard.eu/pages/cou...ng.Related), but I'd like to count on more than one relationship.

For example:

User (1:M) Profiles (M:1) Converters

Each User can have multiple Profiles for a single Converter. After retrieving a Profile, I want to know how many Profiles the User has for that same Converter.

So far, my solution is:

Code:
// get Profile by ID
$p = new Profile(99);
// get the related User and Converter
$u = $p->user->get();
$c = $p->converter->get();
// how many Profiles does this User have for this Converter?
$p->where_related($c);
$p->where_related($u);
$p->get();
$count = $p->result_count();

Is there a simpler/more elegant/concise way to accomplish this?
#2

[eluser]WanWizard[/eluser]
Not really simpler or more elegant, but probably faster since it's only two queries:

Code:
$p = new Profile();

// get the profile and related user and converter info
$p->include_related('user')->include_related('converter')->get_by_id(99);

// how many Profiles does this User have for this Converter?
$count = $p->where_related_user('id', $p->user_id)->where_related_converter('id', $p->converter_id)->count();
#3

[eluser]Genki1[/eluser]
Thank you -- I'll take the speed improvement. And, I'm feeling good that I'm getting the hang of DataMapper :-)




Theme © iAndrew 2016 - Forum software by © MyBB