젠드 프레임 워크를 사용하여 개발 된 응용 프로그램을 만들고 있습니다. 나는 예를 들어, 모델에 관계를 정의하고, 즐겁게 사용할 수 있습니다 : 그러나Zend Framework 관계 - findManyToManyRowset()에서 열 이름 정의?
$rowset = $row->findManyToManyRowset('People', 'Jobs');
, 내가 행 집합이 반환되는 문제를 공격 한 '사람'에서 같은과 '잡스 있습니다 열 이름을 가지고 따라서 배열 키를 병합하여 최종 행 집합의 일부 데이터를 손실합니다.
은 내가 매개 변수 중 하나로서 findManyToManyRowset()
에 Zend_Db_Select
개체를 전달할 수 이해하지만,이 경우에 사용하는 방법을 설명하는 모든 문서를 찾을 수 없습니다 예 :
$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
사람이 어떻게 이루어져야에 가르치 려 수 있습니까? 데이터베이스의 컬럼 이름을 변경할 수는 있지만, DB 구조를 재 설계하고 모든 관련 코드를 업데이트하는 것과 반대로 코드 변경을 선호합니다.
참고 : (. 즉,이 같은 이름을 가진 열을 병합) :
[_data:protected] => Array
(
[id] => 1
[code] => SX342
)
건배,
매트
답장을 보내 주셔서 감사합니다. 열의 이름을 지정하는 방법이나 데이터베이스 디자인 모범 사례에 대한 좋은 자습서를위한 권장 사항이 있습니까? – fistameeny
예를 들어 한 테이블에서 "person_id"대신 다른 테이블에서 "id"대신 두 테이블 모두에서 "person_id"를 사용할 수 있습니다. 가능한 경우 같은 내용의 열을 테이블간에 동일한 이름으로 만듭니다. 단순히 "코드"대신 "person_code"와 유사합니다. 기본적으로 열 이름은 적어도 쿼리에서 함께 조인 될 테이블 일 때 테이블간에 고유해야합니다. –
"Joe Celko의 현자를위한 SQL 프로그래밍 스타일"의 첫 장을 읽으십시오. Google 도서는 온라인 미리보기에서 장을 포함 http://books.google.com/books?id=a9jtyioHfp8C –