2016-05-12 9 views
0

いくつかの共同データが設定されたいくつかのpropelオブジェクトを取得しようとしています。参加結果をPropelと条件でグループ化するORM

問題:

私は2つのテーブルを持っているが、表Aと表Bそれらを呼び出すことができます、テーブルAがテーブルBの親である、関係は片方の親が多くの子供を持つことができ、多くの1つ、です。

子テーブルのクエリを実行してその親を取得し、結果を親IDでグループ化したいので、後で各子をhtmlの親タブに印刷できます。

は、ここで私は多くの幸運のない多くのことを読んでいる、と私はこのうち私の方法を思えいけないと私はずっと自分自身をテストが終了haventは正直に言うと

<table name="countries"> 
    <column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" /> 
    <column name="name" type="VARCHAR" size="128" required="true" /> 
    <column name="country_code" phpName="CountryCode" type="VARCHAR" size="7" required="true" /> 
    <column name="status" phpName="Status" type="BOOLEAN" required="true" defaultValue="false" /> 

    <behavior name="timestampable" /> 
    <behavior name="soft_delete" /> 
</table> 

<table name="banks"> 
    <column name="id" type="INTEGER" required="true" primaryKey="true" autoIncrement="true" /> 
    <column name="name" phpName="Name" type="VARCHAR" size="128" required="true" /> 
    <column name="status" phpName="Status" type="BOOLEAN" required="true" defaultValue="false" /> 
    <column name="country_id" phpName="CountryId" type="INTEGER" required="true" /> 

    <foreign-key foreignTable="countries" phpName="Countries" onDelete="setnull" onUpdate="cascade"><!-- country parent --> 
     <reference local="country_id" foreign="id" /> 
    </foreign-key> 

    <behavior name="timestampable" /> 
    <behavior name="soft_delete" /> 
</table> 

私のスキーマです。

<?php 
public function banks(Application $app) 
{ 
    $banks = BanksQuery::create() 
     ->where('banks.status = ?', true) 
     ->find(); 
    $nav_options = $this->getNav($app); 
    $admin_level = false; 
    return $app['twig']->render('admin/banks.twig', array 
     (
      'admin_level' => $admin_level, 
      'nav_options' => $nav_options, 
      'banks' => $banks 
      ) 
     ); 
} 

また、ダイスを作成するための他の方法も試しました。

<?php 
$banks = BanksQuery::create() 
     ->orderByCountryId() 
     ->joinWithCountries('banks.country_id') 
     ->where('banks.status = ?', true) 
     ->find(); 

として全体的なアイデアは、すべての親によってグループ化され、すべての子供たちを取得することですので、私は3人の親を持ち、それぞれの両親は、N個の子供に1間を持っている場合、私は、HTMLで印刷するように取得することができ、それぞれの親タブとその子要素を各タブのコンテンツとして表示します。

もし私が各親に照会するのであれば、それはuseCountriesQuery() - > filterById(ID-HERE)で実行可能ですが、これを1回の掃引で行いたいと思います。

私がしたいことをする方法はありますか?

答えて

0

ok私は、クエリを別の方法で実行している解決策を見つけました。 leftJoinWithBanks( 'Banks.CountryId') - > orderById() - > find(); 銀行に参加している国々に質問すると、必要な情報が得られます。

関連する問題