我正在尝试在“homes
”表和“furniture
”表格之间建立关联。
基本上,家里可以有多个家具,所以我有一个home_furniture_bridge表,如下所示:
home_id | furniture_id
显然,与home_furniture_bridge的家庭关系无关紧要,重要的是家居与家具之间的关系。如何在PHP ActiveRecord中描述这种关联?
编辑:目前我有一个home.php模型和一个furniture.php模型。我不需要home_furniture_bridge模型吗?
答案 0 :(得分:1)
为了使用这种多对多关联,您需要定义第3个模型,并在其中一个模型中使用has_many
through
语法:
class Home extends ActiveRecord\Model {
static $has_many = array(
array('home_furniture_bridge', 'class_name' => 'HomeFurnitureBridge'),
array('furniture', 'class_name' => 'Furniture', 'through' => 'home_furniture_bridge')
);
}
class HomeFurnitureBridge extends ActiveRecord\Model {
static $belongs_to = array(
array('home'),
array('furniture', 'class_name' => 'Furniture')
);
}
class Furniture extends ActiveRecord\Model {
static $has_many = array(
array('homes')
);
}
请注意,您必须使用home_furniture_bridge
和furniture
的类名,因为php AR适用于表和类名的复数/单数约定。