我将Codeigniter与datamapper orm一起使用并遇到问题
这是我的模特:
邮寄 - >有很多行
行 - >有很多细胞
细胞 - >有很多版本
版本有一个已创建的字段和一个已更新的字段。
我想通过创建或更新的最新版本更改获得最后10个邮件订单..
我想这样做:
$versions = new Version();
现在通过创建或更新
获得最近10个版本的订单并通过mailing_id区分,现在让所有邮件显示... 像这样: ?
foreach ($version as $v)
{
$v->mailing->get();
}
thx for help
答案 0 :(得分:1)
是的,您可以在循环内的每个相关模型上调用->get()
但这会生成n+1 query scenario,如果您循环遍历许多版本行,则会很慢。
当您一步查询Mailing
(窗帘后面的联接)时,您可以使用include_related
来获取已加载数据的完整Version
个实例,如下所示:
$versions = new Version;
$versions->order_by(...)->limit(...); // add your ordering and limiting as before
$versions->include_related('mailing', null, true, true);
// include related mailings, with of their fields and create instances, see
$versions->get();
foreach ($versions as $version) {
// now the $version->mailing is a Mailing instance loaded with the related data
print $version->mailing->id
}