学说 - 从一个查询的两个表中获取数据
问题描述:
请有人可以帮助我一个基本的学说查询吗?我刚刚将一个大的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');
(请注意,我切换到u
o
。)
非常感谢Flinsch,你完全明白的问题! – Matt 2010-12-06 15:28:10