2017-03-28 44 views
0

我很难尝试从Laravel中的集合中创建关联数组。然后该数组应该用于案例检查。从laravel中的集合创建用于检查目的的关联数组

我得到我的收藏是这样的:

$collected_items = $user->collected_items()->where('model_id', '=', $model_id)->get(); 

我需要从这个集合只提取了一些相关的数据,如'color_id'

我需要检查color_id因为我如果color_id = 0, 1 or 2运行不同的代码

因为我不想为每个案例做一个数据库查询,所以我想我会更好地加载数据,然后把它放在一个关联数组中;

不过,对于我的生活,我不能创建这个数组 我想:

$array_of_colors = [] 

    foreach ($collected_items as $i) { 

        if ($i['color_id'] == 0) { 

         $array_of_colors += ['black' => $i->model_color_id]; 
        } 
        if ($i['color_id'] == 1) { 

         $array_of_colors += ['colored' => $i->model_color_id]; 
        } 
        if ($i['color_id'] == 2) { 

         $array_of_colors += ['white' => $i->model_color_id]; 
        } 


       } 

然后我会使用$array_of_colors检查,如果我有黑色的,然后做一些事情的情况下,是白色的东西其他等等等

+1

你实际上得到一个集合回你看着使用'filter'选项? – Pitchinnate

+0

https://laravel.com/docs/5.4/collections#method-filter – Pitchinnate

+1

你是对的,谢谢,我使用过滤器()选项,然后max()和min()对已过滤的集合分配值I需要一些变量。 – Chriz74

回答

0
$array_of_colors = [] 

foreach ($collected_items as $i) { 

       if ($i['color_id'] == 0) { 

        $array_of_colors[] = ['black' => $i->model_color_id]; 
       } 
       if ($i['color_id'] == 1) { 

        $array_of_colors[] = ['colored' => $i->model_color_id]; 
       } 
       if ($i['color_id'] == 2) { 

        $array_of_colors[] = ['white' => $i->model_color_id]; 
       } 


      } 
0

而不是这样做,我强烈建议使用Laravel中可用的集合函数。特别是我认为filter()会适合您。

https://laravel.com/docs/5.4/collections#method-filter

事情是这样的:

$black_items = $collected_items->filter(function ($value, $key) { 
    return $value->model_color_id == 1; 
}); 
+0

是的,我用它作为评论上面,谢谢。 – Chriz74