PHP ActiveRecord与桥表

时间:2013-02-03 19:27:50

标签: php phpactiverecord

我正在尝试在“homes”表和“furniture”表格之间建立关联。

基本上,家里可以有多个家具,所以我有一个home_furniture_bridge表,如下所示:

home_id | furniture_id

显然,与home_furniture_bridge的家庭关系无关紧要,重要的是家居与家具之间的关系。如何在PHP ActiveRecord中描述这种关联?

编辑:目前我有一个home.php模型和一个furniture.php模型。我不需要home_furniture_bridge模型吗?

1 个答案:

答案 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_bridgefurniture的类名,因为php AR适用于表和类名的复数/单数约定。