2010年4月26日星期一

Re: [fw-db] Combine two one-to-many relationship

Hi,
You can use select to run sql queries:
return $this->fetchAll(
$this->select("Select * from institions as i where i.country_id in
(select c.country_id from countries as c where c.continent_id = 1)")
);

Ting Wang wrote:
>
> Hi,
>
> Is there any way I can combine two one-to-many relationship?
>
> For example, a world region has many countries, a country has many
> institutions. How could I find all cities in a world region?
>
> What I am doing now is find all countries in a world region, then find
> the institutions in every country, then merge these institutions together.
>
> I don't think this is a elegant way.
>
> Of course I can using the following SQL to find all institutions. My
> Question is there a Zend_Db_Tables way to do it?
>
> Select * from institions as i where i.country_id in (select
> c.country_id from countries as c where c.continent_id = 1)
>
> ------------- code to find all institions in a continents
> ------------------------------------------
>
> public function getAllInstitutionsInCountry(Application_Model_Country
> $country){
>
> return $country->findDependentRowset( 'Application_Model_Institutions'
> )->toArray();
>
> }
>
> public function
> getAllInstitutionsInContinent(Application_Model_Continent $continent)
>
> {
>
> $institutions = new Application_Model_Institutions();
>
> $countires = new Application_Model_Countries();
>
> $countries = $countires->getAllContiresInContinent($continent);
>
> $allInstitutions = array();
>
> foreach ($countries as $country) {
>
> $allInstitutions = array_merge($allInstitutions,
> $institutions->getAllInstitutionsInCountry($country));
>
> }
>
> return $allInstitutions;
>
> }
>
> Thanks
>
> Ting
>


--
Yaroslav Vorozhko . Web Developer
web . http://pro100pro.com
twi . http://twitter.com/vorozhko
skp . yarik0083

没有评论: