我有这个表结构:
|用户| ---有很多> --- | preferences_users | ---<有很多--- |偏好|
首选项可以是“名字”或“姓氏”,但这些首选项的值存储在连接表中。
我正在使用Codeigniter和Datamapper ORM将关系表转换为对象,但是我不知道如何在连接表中获取此值。
我这样做:
$user = new User();
$user->where('unique_url', $url)->get();
$user->preferences->get_iterated();
我的关系设置为$has_many = array('tablename');
,我可以从每个表中获取值。
HOwever我希望能够从加入表中获取表列值,是否有人知道如何执行此操作?
谢谢,
伊恩
答案 0 :(得分:0)
我找到了答案in the documentation:
$object->include_join_fields()
此方法没有选项。在添加之前设置它 关系。你可以在之前使用它
{$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"); } }
有关详细信息,请参阅Working with Join Fields。
答案 1 :(得分:0)
您可以使用:
$Object->joinedObject->include_join_fields()->get();
然后获取连接字段:
$Object->{join}_count;
请注意添加文档中引用的join_ before field (count) name
。
感谢。