2017-06-15 43 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变量只是一个局限于循环本身的局部变量 –