Activerecord 是否有类似“的东西?”;有“一:通过(从轨道上)”一节;在Yii框架中?

Activerecord 是否有类似“的东西?”;有“一:通过(从轨道上)”一节;在Yii框架中?,activerecord,relationship,yii,has-many-through,Activerecord,Relationship,Yii,Has Many Through,我有以下表格: manufacturers * id * name * description types * id * name * description * manufacturer_id cars * id * title * description * type_id 现在我的问题是,我想列出类型和制造商的汽车,例如: * Some Car, Fiat Punto * Another Car, Ferrari F1 在rails中,我可以设置制造商与以下内容的关系: clas

我有以下表格:

manufacturers
* id
* name
* description

types
* id
* name
* description
* manufacturer_id

cars
* id
* title
* description
* type_id
现在我的问题是,我想列出类型和制造商的汽车,例如:

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

在rails中,我可以设置制造商与以下内容的关系:

class Car < ActiveRecord::Base
  belongs_to :type
  has_one :manufacturer, :through => :type
end
class-Car:类型
终止
这在Yii中也是可能的吗?

您必须使用“关系”功能来完成类似的事情。介绍ActiveRecord的最佳页面是您可以找到的关于ActiveRecord的页面

由于汽车之间的关系是一对多的关系,因此这种关系将是“HAS_many”

例如(假设您有一辆汽车和一个制造商型号):

汽车:

制造商:

public function relations()
{
   return array('cars' => array(self::HAS_MANY, 'Car', 'manufacturerId'));
}
然后,您可以通过以下方式为制造商获取一系列汽车:

foreach($oManufacturer->cars as $oManufacturer)
   echo $oManufacturer->name;
对于汽车:

    echo $oCar->manufacturer->name;
这假设两个表都已制造。 希望有帮助:)

编辑:您没有义务在两个模型中定义关系。例如,如果您不需要汽车制造商,那么最好不要在那里定义关系函数。

从Yii 1.1.7开始(我相信),“通过”支持现在存在于关系活动记录中。

谢谢。这也是我当前的解决方案(在类型和汽车中插入制造商id)。但是,在cars表中没有制造商id的情况下是否可以创建关系?我能看到的唯一其他解决方案是创建一个包含carId manufacturerId条目的映射表。这将是稍微多一点的工作,因为你必须做一个FindByatAttributes来定位汽车或制造商,并将它们与实际对象联系起来。
    echo $oCar->manufacturer->name;