学说 - 从一个查询的两个表中获取数据

问题描述:

请有人可以帮助我一个基本的学说查询吗?我刚刚将一个大的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'字段分组。

我搜索了文档,但没有得到任何工作。非常感谢任何帮助。

非常感谢,

马特

我不知道,如果我完全听明白你的问题。但是,如果我这样做,只是尝试以下操作:

$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