我很难尝试从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
检查我是否有黑色情况然后做某事,是白色其他等等。
答案 0 :(得分: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];
}
}
答案 1 :(得分:0)
我强烈推荐使用Laravel中提供的Collection函数,而不是这样做。特别是我认为filter()
适合你。
https://laravel.com/docs/5.4/collections#method-filter
这样的事情:
$black_items = $collected_items->filter(function ($value, $key) {
return $value->model_color_id == 1;
});