2010-07-20 23 views
0

我有我的表模型,並希望做一個使用模型,而不是一個表的連接。 例如,而不是:Zend加入模式

$select = $this->select() 
->from(array('p' => 'products'), 
    array('product_id', 'product_name')) 
->join(array('l' => 'line_items'), 
    'p.product_id = l.product_id', 
->limit(20, 10); 

,我指定表名,我想加入欄,我不能用我的模型?

$select = $this->select() 
->from(array('p' => 'products'), 
    array('product_id', 'product_name')) 
->join(array('l' => Model_Table1::tableName()), 
    'p.product_id = l.product_id', 
->limit(20, 10); 
+0

作爲一個止損,我創建了其他模型的實例並根據需要獲取行。 – 2010-07-21 10:55:03

回答

1

我不明白爲什麼不能,如果你的模型具有名稱和靜態功能的靜態變量返回變量:

protected static $table = 'dbname'; 
public static function tableName() { 
    return self::$table; 
} 

它是值得的?表名是否會改變?

+0

有問題的模型正在控制兩個表格(爲了保持第6個標準形式)。只包括一個表不是一個選項,並且所需的連接很複雜。 – 2010-07-21 10:53:32

2

沒有...ü水溼連接兩個模型......這些都是一流的,可包括..這樣你們只能在控制器中使用這些類或可以在另一個模型包括太...根據應用程序或要求

0

您必須設置完整性檢查爲false。像這樣

$select = $this->select() 
->setIntegrityCheck(false) 
->from(array('p' => 'products'), 
    array('product_id', 'product_name')) 
->join(array('l' => 'line_items'), 
    'p.product_id = l.product_id', 
->limit(20, 10);