0

我有这个表结构:

| 用户 | --- 有很多 > --- | 偏好_用户 | --- < 有很多 --- | 偏好 |

首选项可能类似于“名字”或“姓氏”,但这些首选项的值存储在连接表中。

我正在使用 Codeigniter 和 Datamapper ORM 将关系表转换为对象,但是我不确定如何在连接表中获取此值。

我正在这样做:

$user = new User();
$user->where('unique_url', $url)->get();
$user->preferences->get_iterated();

我的关系已经建立,因此它们都具有$has_many = array('tablename');并且我能够从每个表中获取值。

但是我希望能够从连接表中获取表列值,有人知道该怎么做吗?

谢谢,

伊恩

4

2 回答 2

0

我在文档中找到了答案:

$object->include_join_fields()

此方法没有选项。在添加关系之前设置它。您可以在 a 之前使用它 {$query}_related_{$model},也可以在调用get()相关项目之前使用它。表上不属于关系的所有字段都包括在内,并以"join_".

此方法可能会返回意外结果或抛出具有深层关系的错误。

用法:

// Create User $u = new User(); $u->get_by_id($userid);

// get all alarms for this user, and include the extra 'wasfired'
field $u->alarm->include_join_fields()->get();

foreach($u->alarm as $alarm) {
    if($alarm->join_wasfired) {
        echo("{$alarm->name} was fired\n");
    } else {
        echo("{$alarm->name} was NOT fired\n");
    }
}

有关更多详细信息,请参阅使用连接字段

于 2012-09-08T18:21:58.037 回答
0

你可以使用这个:

$Object->joinedObject->include_join_fields()->get();

然后获取连接字段:

$Object->{join}_count;

请注意添加join_ before field (count) name文档中引用的内容。

谢谢。

于 2013-11-10T22:28:34.360 回答