- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
foreach ($relations as $relation) {
$structured_relations[$relation['status_name']][] = [
'id' => $relation['sl_id'],
'status' => $relation['status'],
'status_name' => $relation['status_name'],
'parent' => $relation['parent'],
'parent_name' => $relation['parent_name'],
'customer' => $relation['customer'],
'provider' => $relation['provider'],
'admin' => $relation['admin'],
];
}
return $structured_relations;
В $structured_relations загоняются только нужные поля, а не вся строка из (?)базы
foreach ($relations as $k => $relation) {
$structured_relations[$k] = $relation;
$structured_relations[$k]['id'] = $relation['sl_id'];
}
return $structured_relations;
В Селекте можно сразу указать какие поля необходимо получить. Если большое количество полей, это может отрицательно повлиять на скорость при большом объёме данных.
Код не мой, а новичка, который мне пришлось форматировать и оптимизировать.
Здесь строчка моя 'id' => $relation['sl_id'], которой я считаю ошибочной и в итоге код должен получится просто
foreach ($relations as $relation) {
$structured_relations[] = $relation;
}
return $structured_relations;
2. перед foreach добавить как минимум if ($relations) ...
3. перед foreach можно добавить ещё $structured_relations = array();
кроме всего это итоговая структура группируется по полю $relation['status_name'], чего нет в твоём варианте!
4. т.к. поле status_name будет в итоговой структуре ключом, то в поля массива его можно не вносить!
"В Селекте можно сразу указать какие поля необходимо получить."
2,3) Согласен, полностью. Это есть, просто не стал приводить
4) Дублирование код, согласен
Плюс, возможно, может возникнуть ситуация, когда в $structured_relations поля будут отличаться по названию от из аналогов в $relations (в базе) + могут быть всякие их трансформации перед выводом.
Так что имхо там там код. Не говнокод.
foreach ($relations as $relation) {
$relation['id'] = $relation['sl_id'];
$structured_relations[] = $relation;
}
return $structured_relations;
// типа без $k
foreach ($relations as $relation) {
$structured_relations[] = $relation;
}
return $structured_relations;
до вот этого: return $relations;
)) Если конечно выше ничего там не делается с $structured_relations)
1. группировка по полю status_name теперь вообще не производится;
2. поле sl_id теперь вообще не принимает значение поля id.
3. харэ выёживаться - изначальный код был вполне нормальным.... немного кривым, но вполне рабочим