Я использую Zend_Db_Select в настоящее время для получения иерархических данных из нескольких объединяемых таблиц. Я должен смочь преобразовать это легко в массив. За исключением использования оператора переключения и списка все столбцы индивидуально для сортировки данных, моя мысль была то, что, если бы я мог бы автопредварительно ожидать имена таблиц к ключам в массиве результата, который решил бы мою проблему. Так рассматривая следующий (собранный) SQL:
SELECT user.*, contact.* FROM user INNER JOIN contact ON contact.user_id = user.user_id
Я обычно получал бы массив результата как это:
[username] => 'bob',
[contact_id] => 5,
[user_id] => 2,
[firstname] => 'bob',
[lastname] => 'larsen'
Но вместо этого я хочу это:
[user.user_id] => 2,
[user.username] => 'bob',
[contact.contact_id] => 5,
[contact.firstname] => 'bob',
[contact.lastname] => 'larsen'
У кого-либо есть идея, как достигнуть этого?
Спасибо!
Поскольку robertbasic ускользает от этого, вам необходимо расширить свои классы Row и RowSet для достижения этой цели. Загляните сюда, чтобы начать работу http://framework.zend.com/manual/en/zend.db.table.rowset.html
Автоподдержка без расширения частей ZF, AFAIK невозможна. Однако вы можете указать ему, как назвать столбцы в выбранном наборе строк:
$select->from(array('users'=>$this->_name),
array('user_id' => 'id', 'user_name' => 'username'));
и так далее ...