2014-01-28 96 views
1

我想知道是否可以訂購任何子模型,而懶惰加載? 目前我有Laravel懶惰渴望加載訂購

Item :: findOrFail($ id) - > load('sections','level','category','tags','relatedItems');

我想標籤的名字,所以我在想訂購,如果像

項目:: findOrFail($ ID) - >負載(「節」,「水平」,「類」,「標籤','relatedItems') - > orderBy('tag.name');

將成爲可能。

我在這裏看到使用'with'的其他例子,但我似乎無法得到一個單一的基礎模型加載。

感謝

+0

...有趣的問題! –

回答

2

您使用相同的語法與貪婪加載的限制,

$item = Item::findOrFail($id); 
$item->load(array('tags' => function($query) { 
    $query->orderBy('tag.name'); 
})); 

在你的榜樣,你也可以使用()代替負載()。後者用於當你想加載到現有的模型,如我的例子,但我認爲這是分裂頭髮!

+0

這似乎不適用於我。如果我使用「加載」,則找不到該項目。如果我使用'with',那麼該項目被找到,但沒有任何標籤。 在項目模型中,我有 'public function tags() {this-> belongsToMany('Tag','tag_item_map'); }' 而在標籤模型中,我有 '公共功能類別() { }返回$ this-> belongsToMany('Item','tag_item_map'); }' – user3245295

+1

它適用於我。你可能還有其他事情正在進行。沒有看到模型很難說。 – Dave