Как сформировать одномерный из многомерного массива из столбцов MySQL с одинаковыми ключами массива?
Добрый день,бьюсь над такой задачей,буду благодарен за ответ.
Имеем базу банных, с таблицами users и leads, в первой таблице хранятся имена менеджеров и их id(не инкремент), во второй таблице хранятся все сделки проведённые этими менеджерами.
----------------------------users------------------------
| id_users | id | name | last_name | login |
-----------------------------------------------------------
1 | 738687| Михаил | Иванов | qwwee |
-------------------------------------------------------------
2 |817770 | Дмитрий | Петров | refhrter |
Ну и так далее, скажем пользователей 6.
----------------------------------------leads---------------------------------------------------------
| id_lead | id | name | date_create | responsible_user_id | price | date_cloce |
-------------------------------------------------------------------------------------------------------
1 | 704077| Ваш дом | 1463328190 | 738687| | 47474 | 0 |
-------------------------------------------------------------------------------------------------------
3 | 333333| Наш сад | 1484204113 | 817770 | | 44444 | 1485419792|
ну и так далее
Ключ это responsible_user_id и id из таблицы users. формирую запрос
$test= $qwerty->TransferToTheDatabase->getRows(('SELECT users.name , leads.date_close, leads.name FROM users INNER JOIN leads ORDER BY users.name')); название класса и переменная были изменены=)
После этого запроса выводится многомерный массив отсортированный по именам, но в него не попадают имея сделки, не понятно почему или же я коряво запрос составил,как только убираешь из запроса users.name , то появляются название сделки.
дальше я пытаюсь собрать всё в один одномерный массив ,что бы потом его сериализировать и отправить ребятам,которые пилят дашборд.
$iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($test));
function addingInArray(\Traversable $iterator, $use_keys = false) {
$array = array();
foreach ($iterator as $key => $value) {
if ($value instanceof \Iterator) {
$value = iterator_to_array_deep($value, $use_keys);
}
if ($use_keys ) {
$array[] = $value;
}
}
return $array;
}
так -то формирует массив сбрасывая ключи и набивая их значениями,что крайне не удобно для подсчета кол-во сделок пользователя, если поставить $use_keys = true, то выведет всех менеджеров и одну их сделку.
Вопрос такой можно ли получить массив вида Имя менеджера и все его сделки с датой закрытия?
Возможно не корректно поставил вопрос,но все же буду благодарен за помощь
Эм.. то что вы поменяли название, это не значит что код стал понятнее.
Попробуйте вывести результат запроса напрямую (выполнить его в БД) или задать явные имена столбцов: SELECT users.name as username , leads.date_close as closed_at, leads.name as leadname FROM users INNER JOIN leads ORDER BY users.name'
Bezpaniki: а можете хотя бы примерно прислать результат $test перед итерированием? Просто иначе - гадание на кофейной гуще. Может у Вас уже там нет нужных полей
и так далее, так по каждому пользователю выводит, а хотелось, бы получить статистику по Менеджеру мол Дмитрий Петров закрыл столько то сделок, всего сделок и тд и тп. Но не привязываясь явно ни к id пользователя ни к его имени
Bezpaniki: так это другой запрос. Как у Вас определяется структура таблицы lead ? Что считается завершенной сделкой ? Есть ли периоды?
Как вы в плоской таблице покажите все названия сделок и их даты завершения, одновременно с общим количеством сделок ? Либо избыточность, либо доп. запрос.