0

我将 Codeigniter 与 datamapper orm 一起使用并且有问题

这是我的模型:

邮寄 -> 有很多行

行 -> 有很多单元格

cell -> 有很多版本

version 有一个 created 和一个 updated 字段。

我想通过创建或更新的最后一个版本更改来获取最后 10 个邮件订单。

我想这样做:

$versions = new Version();

现在通过创建或更新获取最近 10 个版本的顺序

并且由 mailing_id 区分,现在让所有邮件显示......像这样:?

foreach ($version as $v) 
{
$v->mailing->get();
}

谢谢帮助

4

1 回答 1

1

是的,您可以->get()在循环中调用每个相关模型,但这会生成一个n+1 查询场景,并且如果您要遍历大量版本行,则速度会很慢。

当您一步查询 s 时(使用幕后连接),您可以使用来获取加载数据的include_related完整实例,如下所示:MailingVersion

$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
}
于 2013-04-13T19:39:05.737 回答