2017-06-15 70 views
0

我正在編寫代碼來對父代中的雄辯關係實例進行排序。PHP Laravel foreach不修改值

$categories = CategoryMain::with('subs')->get(); 
    foreach($categories as &$category){ 
     $category->sub = $category->subs->sortBy('name'); 
    } 

我得到的foreach循環,這是我做模具(的var_dump())驗證機中正確的安排;,

但是,一旦它在外面,好像它沒有改變。 爲什麼會發生?

+0

請出示與$類模式的代碼。 –

+0

這些是唯一的代碼.. 我想要實現的是對subs,它已經在foreach是正確的,但它完成後,它不會修改值@KrisRoofe –

+0

您不保存模型,所以沒有什麼會改變 – Derek

回答

0

嘗試這樣的事情,看看是輸出:

$categories = CategoryMain::with('subs')->get(); 

$counter = 0; 
foreach($categories as $category) { 
    $categories[$counter]->sub = $category->subs->sortBy('name'); 
    $counter++ 
} 
//output the data of catgories 
dd($categories); 
+0

這種方式將工作,我想.. 但爲什麼我們不能直接改變它使用for循環迭代器? –

+0

在foreach循環中使用迭代器的原因是將循環內部生成的新值保存到原始Collection對象。 $ category變量只是一個侷限於循環本身的局部變量 –