0

这是我的关系模型的开始;

ERD

我不使用 DataMapper 为所有内容创建关系表的冗余方式,但我似乎不能;

代码

<?php
$brand = new Brand(1);

var_dump($brand->themes->get());

    var $has_many = array(
        'themes' => array(
            'class' => 'theme',
            'join_table' => 'themes'
        )
    );
}

主题

<?php

class Theme extends DataMapper {

    var $has_one = array(
        'brand' => array(
            'join_table' => 'brands',
        )
    );

}

这会导致brands.id 字段失败;

SELECT `themes`.*
FROM (`themes`)
LEFT OUTER JOIN `brands` brands ON `themes`.`id` = `brands`.`theme_id`
WHERE `brands`.`brand_id` = 1 # <<< Wrong :(

我阅读了文档,但似乎我读得太牵强了。我不想使用关系表,除非它是真正的多对多关系。

4

1 回答 1

1

编辑您的模型:

var $has_many = array(
    'theme'
)

主题

var $has_one = array(
    'brand'
)

现在您可以轻松地在控制器中获取信息。如果要列出品牌的主题,请使用:

$_brand = new Brand;
$brand = $_obrand->get_by_id(1);
foreach($brand->themes AS $theme) {
    echo $theme->name;
}

注意:上面的示例需要在配置中自动加载关系,请参阅手册

$config['auto_populate_has_many'] = TRUE;
$config['auto_populate_has_one'] = TRUE;
于 2013-11-01T12:51:25.040 回答