$models = new Models();
$select = $models->select(Zend_Db_Table::SELECT_WITH_FROM_PART);
$select->setIntegrityCheck(false)
->join(array("a"=>"manufacturers"), 'models.manufacturer_id = a.id',
array("man_name"=>"name", "man_description"=>"description"))
->where("a.name LIKE 'A%'");
$rowset = $models->fetchAll($select);
는 불행하게도 Zend_Db_Table
관계 인터페이스는 훨씬 지능이없는 선언 된 참조 맵에서 조인 된 쿼리를 만드는 것과 관련됩니다. 커뮤니티가 제공하는 복잡한 쿼리의 솔루션은 Zend_Db_Table_Select
쿼리 팩토리입니다.
제조업체의 이름과 설명에 대해 별칭을 지정해야합니다. 그렇지 않으면 이러한 열은 모델의 이름과 설명을 행 데이터의 연관 배열에 표시하지 않습니다. 이 문제를 방지하려면 열의 이름을 분명히 지정해야합니다.
그러나 귀하의 경우
, 나는 테이블 인터페이스와 선택 인터페이스를 건너 뛰고 단순히 DB 어댑터를 사용하여 SQL 쿼리를 직접 실행하는 것 :
$data = $db->fetchAll("
SELECT m.*, a.name AS man_name, a.description AS man_description
FROM Models m JOIN Manufacturers a ON m.manufacturer_id = a.id
WHERE a.name LIKE 'A%'");
당신은 간단하게 데이터를 다시 얻을 것이다를 연관 배열의 배열이며 Zend_Db_Table_Rowset
이 아닙니다. 그러나 조인 된 행 집합은 어쨌든 쓰기 가능하지 않기 때문에 많은 것을 희생하지 않았습니다.
"그러나 조인 된 행 집합은 쓰기가 가능하지 않으므로 많이 희생하지 않았습니다." Zend_Db_Table_Row 원칙이 가장 단순한 경우를 제외하고 대부분의 경우에 가장 중요한 점입니다. –
@tomas : "+ +"연산자는 곱셈이나 나눗셈을 정상적으로 수행하지 않습니다. 그것은''sux? 아니면 그 직업에 적합한 도구가 아닌 것입니까? –
조인 된 행 집합을 쓸 수없는 이유는 무엇입니까? 일부 데이터베이스는 조인을 사용하여 업데이트 쿼리를 지원합니다. – troelskn