Querying across multiple tables in CakePHP 3.x ORM

2014-12-09 Thread george dan gil Duran


I have three tables *Countries, Cities* and *Addresses*. Their relationship 
is Countries hasMany Cities, Cities hasMany Addresses. So Its something 
like this Countries-Cities-Addresses.

If I want to get all addresses in a certain city I can do it like this

$this-paginate = [
'contain' = ['Cities']
];
$this-set('addresses', $this-paginate($this-Addresses));

If I want to get all Cities in a certain Country I can do like that as well.

*What I want is I want to get all Addresses in a Certain Country. *If 
there's new way by modifying above code or using ORM it would be great.

Note: Addresses *does not* contain foreign key for Countries, instead its 
in the Cities.

Possible query would be: SELECT a.*, c.* FROM countries a LEFT JOIN cities 
b ON a.id=b.country_id LEFT JOIN addresses c ON b.id=c.city_id

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cake-php+unsubscr...@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.


Querying across multiple tables in CakePHP 3.x ORM

2014-12-09 Thread Dakota
What you want is matching(), 
http://book.cakephp.org/3.0/en/orm/query-builder.html#filtering-by-associated-data

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
CakePHP group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to cake-php+unsubscr...@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.