2011-01-30 29 views
2

我有以下表格:在Yii框架中是否有像「has_one:through(from Rails)」?

manufacturers 
* id 
* name 
* description 

types 
* id 
* name 
* description 
* manufacturer_id 

cars 
* id 
* title 
* description 
* type_id 

現在我的問題是,我想與類型和manufacurers,例如列出汽車:

* Some Car, Fiat Punto 
* Another Car, Ferrari F1 

...

在鐵軌我可以與製造商建立關係。像這樣:

class Car < ActiveRecord::Base 
    belongs_to :type 
    has_one :manufacturer, :through => :type 
end 

這在Yii中也是可行的嗎?

回答

2

你必須使用「關係」功能來完成這樣的事情。要介紹的最好的網頁是關於ActiveRecord的網頁,你可以找到here

由於汽車之間的關係是一對多的類型將是「HAS_MANY」。

例如(假設你有一個汽車和生產廠商模型):

汽車:

public function relations() 
{ 
    return array('manufacturer' => array(self::BELONGS_TO, 'Manufacturer', 'manufacturerId')); 
} 

廠商:

public function relations() 
{ 
    return array('cars' => array(self::HAS_MANY, 'Car', 'manufacturerId')); 
} 

然後可以取車的數組,一個製造商通過:

foreach($oManufacturer->cars as $oManufacturer) 
    echo $oManufacturer->name; 

對於一輛汽車:

echo $oCar->manufacturer->name; 

這假定兩個表都有製造商標識。 希望幫助:)

編輯:你沒有義務在兩個模型中定義關係。例如,如果你不需要汽車製造商,那麼在這裏不定義關係函數是完全可以的。

+0

謝謝。這也是我目前的解決方案(將manufacturer_id插入類型和汽車中)。但是,在汽車表中沒有manufacturer_id的情況下可以創建關係嗎? – ipsum 2011-01-30 20:15:07