2013-04-12 73 views
0

我用笨與DataMapper的ORM和有問題DataMapper的:通過關係獲取對象順序字段

這是我的模型:

郵件 - >有許多排

行 - >有許多細胞

電池 - >有許多版本

版本有一個創建一個更新的領域。

我想通過創建或更新的最後一個版本的變化在過去10個郵寄訂單..

我認爲做這樣的:

$versions = new Version(); 

現在得到由過去的10個版本的順序創建或更新

和獨特的mailing_id現在得到所有郵件顯示... 是這樣的:?

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

THX幫助

回答

1

是的,你可以叫->get()在一個循環中每一個相關的模型,但是這會產生一個n+1 query scenario,如果你正在遍歷很多版本的行會很慢。

可以使用include_related獲得加載數據充分Mailing情況下,當你在一個步驟查詢Version S(與加入幕後)是這樣的:

$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 
} 
+0

非常感謝您! –