Я работаю над приложением, разработанным с использованием Zend Framework. Я определил отношения в моделях и могу с удовольствием их использовать, например:
$rowset = $row->findManyToManyRowset('People', 'Jobs');
Однако я столкнулся с проблемой, когда возвращаемый набор строк имеет имена столбцов, которые совпадают в «Люди» и «Работа», и, следовательно, объединяет ключи массива, теряя некоторые данные из окончательного набора строк.
Я понимаю, что могу передать объект Zend_Db_Select
в findManyToManyRowset()
в качестве одного из параметров, но не могу найти никакой документации, объясняющей, как его использовать в этом случае, например:
$select = $this->select()->from(array(
'p' => 'people',
'j' => 'jobs'
),
array(
'person_id' => 'p.id',
'job_id' => 'j.id',
'person_code' => 'p.code',
'job_code' => 'j.code'
)
);
Если я попытаюсь использовать приведенный выше код, я получу сообщение, например:
Error: No reference rule "" from table People to table Jobs
Может ли кто-нибудь просветить меня о том, как это должно быть сделано? Я знаю, что могу изменить имена столбцов в базе данных, но я бы предпочел изменить код, а не перепроектировать структуру моей БД и обновить весь связанный код.
Примечание. Без какой-либо формы псевдонима столбца, как указано выше, возвращаемый набор строк выглядит следующим образом (т. е. он объединяет столбцы с одинаковыми именами):
[_data:protected] => Array
(
[id] => 1
[code] => SX342
)
С уважением,
Мэтт