2010-12-05 24 views
2

基本的なDoctrineクエリを手伝ってもらえますか?私は大規模なOrdersテーブルをmysqlの別々の 'Customers'と 'Orders'テーブルに分割しました。私は今、私のCodeIgniterの/ Doctrineのアプリケーションでそのように二つのテーブルを設定している:Doctrine - 1つのクエリで2つのテーブルからデータを取得する

<?php 

class Orders extends Doctrine_Record { 

public function setTableDefinition() { 
    $this->hasColumn('order_date', 'string', 10); 
    $this->hasColumn('item_code', 'string', 10); 
    $this->hasColumn('invoice_number', 'string', 11); 
    $this->hasColumn('item_name', 'string', 30); 
    $this->hasColumn('item_type', 'string', 15); 
    $this->hasColumn('item_size', 'integer', 1); 
    $this->hasColumn('item_price', 'integer', 3); 
    $this->hasColumn('item_quantity', 'integer', 3); 
    $this->hasColumn('item_total_price', 'integer', 5); 
    $this->hasColumn('item_b_order', 'integer', 1); 
    $this->hasColumn('order_total_items', 'integer', 5); 
    $this->hasColumn('order_total', 'integer', 6); 
    $this->hasColumn('cust_id', 'integer', 4); 
    $this->hasColumn('hallmark', 'integer', 1); 
} 
public function setUp() { 
    // setup the join with the Customers table, linking cust_id in this table with id in Customers table 
    $this->hasOne('Customers', array(
     'local' => 'cust_id', 
     'foreign' => 'id' 
    )); 
    $this->setTableName('orders'); 
} 
} 

<?php 

class Customers extends Doctrine_Record { 

public function setTableDefinition() { 
    $this->hasColumn('cust_name_one', 'string', 30); 
    $this->hasColumn('cust_name_two', 'string', 30); 
    $this->hasColumn('cust_address', 'string', 50); 
    $this->hasColumn('cust_country', 'string', 30); 
    $this->hasColumn('cust_business', 'string', 30); 
    $this->hasColumn('cust_email', 'string', 30); 
    $this->hasColumn('cust_phone', 'string', 30); 
    $this->hasColumn('special_req', 'string', 200); 
} 

public function setUp() { 
    $this->hasMany('Orders as Order', array(
     'local' => 'id', 
     'foreign' => 'cust_id' 
    )); 

    $this->setTableName('customers'); 
} 
} 

問い合わせをする前に、このた:

$q = Doctrine_Query::create() 
    ->select('u.*') 
    ->from('Orders u') 
    ->groupBy('u.invoice_number'); 

      $orders = $q->fetchArray(); 
      $vars['orders'] = $orders; 

は、今私は基本的にしたいです'Orders'テーブルのcust_idが 'Customers'テーブルの 'id'フィールドと一致し、 'Orders'テーブルの 'invoice_number'フィールドでグループ化されている 'Orders'テーブルからすべてを教えてください。

私はドキュメントを検索しましたが、動作させることはできません。どのような助けを非常に非常に感謝します。

多くのおかげで、

マット

答えて

5

私は完全にあなたの問題を理解しなかった場合、私は、よく分かりません。しかし、私がやった場合は、単に以下を試してみてください。

$q = Doctrine_Query::create() 
    ->select('o.*, c.*') 
    ->from('Orders o') 
    ->innerJoin('o.Customers c') 
    ->groupBy('o.invoice_number'); 

(。私はouを切り替えることに注意してください)

+0

感謝にFlinschを、あなたは完全に問題を理解しました! – Matt

関連する問題