2017-03-28 48 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