Я работаю над приложением, разработанным с использованием Zend Framework. Я определил отношения в модели, и могут использовать их с удовольствием, например:Zend Framework отношения - определение имен столбцов в findManyToManyRowset()?
$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
)
Приветствия,
Matt
Спасибо за ответ Билл. У вас есть какие-либо рекомендации относительно того, как столбцы должны быть названы или в более широком масштабе, рекомендации для хороших руководств по наилучшим методам проектирования баз данных? – fistameeny
Например, вы можете использовать «person_id» в обеих таблицах вместо «person_id» в одной таблице и «id» в другой таблице. По возможности сделать столбцы с одним и тем же содержимым одинаковыми именами в таблицах. Аналогично «person_code» вместо простого «кода». В основном, создавайте имена столбцов в разных таблицах, по крайней мере, когда они являются таблицами, которые могут быть объединены в запрос. –
Прочитайте первую главу «Стиль программирования SQL для Joe Celko для Smarties». Google Books включает первую главу в онлайн-превью: http://books.google.com/books?id=a9jtyioHfp8C –