2011-03-10 4 views
1

나는이 질문에 여러 번 질문을해야한다는 것을 알고 있지만 그것에 대한 답변을 찾을 수는 없다.Zend_DBTable relationships

'spots'테이블 & 'members'와 관계 테이블 'spotmembers'를했습니다.

zend 프레임 워크에서 Zend_Db_Table을 사용하고 있지만 요청한 내 관계에서 개체를 검색 할 수 없습니다.

여기 내 클래스는 다음과 같습니다

class Model_DbTable_Member extends Zend_Db_Table { 
protected $_name = 'members'; 
protected $_primary = 'id'; 
protected $_dependentTables = array('Model_DbTable_SpotMember'); 

class Model_DbTable_SpotMember extends Zend_Db_Table { 
protected $_name = 'spotmembers'; 
protected $_primary = 'id'; 
protected $_referenceMap = array(
    'Spot' => array(
     'columns' => 'id_spot', 
     'refTableClass' => 'Model_DbTable_Spot', 
     'refColumns' => 'id' 
    ), 
    'Member' => array(
     'columns' => 'id_member', 
     'refTableClass' => 'Model_DbTable_Member', 
     'refColumns' => 'id' 
    ) 
); 

나는 스팟 객체, 그 작업을 수행하는 방법에 대한 어떤 생각과 관련된 회원 객체를 검색하기 위해 요청을 하시겠습니까?

감사합니다.

답변

2

당신은 간단한 관계 OneToMany이 시도 할 수 있습니다 :

$Members = $Spot->findModel_DbTable_MemberViaModel_DbTable_SpotMember('MemberName','MemberInfo'); 
Zend_Debug::dump($Members->toArray(); 

모든 문서, 여기에서 찾을 수 있습니다 :

$Spot = new Model_DbTable_SpotMember(); 
$SpotDB = $Spot->find($id)->current(); 

$Members = $SpotDB->findParentModel_DbTable_Member(); 
Zend_Debug::dump($Members->toArray(); 

관계 ManyToMany를 들어, 그렇게 somethink http://framework.zend.com/manual/en/zend.db.table.relationships.html

예 9 :

$bugsTable = new Bugs(); // Your "Spot" 
$bugsRowset = $bugsTable->find(1234); // Loading "Spot" and retreive RowSet 
$bug1234 = $bugsRowset->current(); // Retrieve 

$productsRowset = $bug1234->findManyToManyRowset('Products', // Your "Members" table 
              'BugsProducts', // YOur "relation" table 
              'Bug'); // The crurent table "Spot" 
+0

치명적인 오류 : 정의되지 않은 메서드를 호출하십시오. Model_DbTable_SpotMember :: findParentModel_DbTable_Member() ... 나는 이미 zend 마법 함수를 사용할 때이 오류를 catch합니다. 어떤 생각? – Cyril

+0

죄송합니다. 내 잘못입니다 ... 편집 된 소스를보고'find() -> current()'에 의해 반환 된'$ SpotDB'를 사용하십시오. – Akarun

+0

작동합니다! 모든 회원을 관련 시키려면 어떻게해야합니까? 이 current()로 인해 행 집합의 첫 번째 행만 catch합니다. 감사합니다 – Cyril

관련 문제