2010-12-05 86 views
2

請有人可以幫助我一個基本的學說查詢嗎?我剛剛將一個大的Orders表拆分成mysql中的'Customers'和'Orders'表。我現在有兩個表設置這樣在我的笨/學說的應用:學說 - 從一個查詢的兩個表中獲取數據

<?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; 

現在我基本上只是想請說出'訂單'表中的所有內容,其中'訂單'表中的cust_id與'客戶'表中的'id'字段相匹配,並且由'訂單'表中的'invoice_number'字段分組。

我搜索了文檔,但沒有得到任何工作。非常感謝任何幫助。

非常感謝,

馬特

回答

5

我不知道,如果我完全聽明白你的問題。但是,如果我這樣做,只是嘗試以下操作:

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

(請注意,我切換到uo。)

+0

非常感謝Flinsch,你完全明白的問題! – Matt 2010-12-06 15:28:10

相關問題