나는 100 개가 넘는 테이블을 가지고 있습니다. 양식에 제공되는 사용자 이름에 따라 각 테이블에 액세스해야합니다. 사용자 이름은 테이블 이름입니다. 나는 테이블을 나타내는 각각에 대해 100 개의 클래스를 생성하고 싶지 않습니다. 내가 할 수있는 방법이 있니?동적으로 클래스를 생성하거나 하나의 컨트롤러와 모델을 사용하여 여러 테이블에 액세스합니다.
0
A
답변
0
내 기본 매퍼 클래스에 다음과 유사한 코드를 사용
이 같은protected $_tableGateway = NULL;
protected $_tableName = NULL;
public function __construct(Zend_Db_Table_Abstract $tableGateway = NULL, $tableName = NULL) {
//set the tablename in a concrete mapper, set it here in constructor or create mutator to setTableName.
if (!is_null($tableName)) {
$this->_tableName = $tableName;
}
if (is_null($tableGateway)) {
$this->_tableGateway = new Zend_Db_Table($this->_tableName);
} else {
$this->_tableGateway = $tableGateway;
}
}
뭔가 당신이의 이름입니다 Zend_Db_Table_Abstract (DBTABLE 모델) 또는 문자열의 인스턴스를 전달 할 수 있도록해야한다 표.
//controller code
$username = $form->getValue('username');
$mapper = My_Mapper(NULL, $username);
$result = $mapper->fetchAll();
저는 이것이 실제로 끝났다고 생각하지 않지만 길을 보여 주어야합니다.
당신이 매퍼를 사용하여 당신이 (이 Zend_Db_Table_Abstract을 받아들이는 매퍼로 전달 될 수있다) 시도 할 수 있습니다 DBTABLE 모델을 사용하지 않으면 :
class Application_Model_DbTable_Users extends Zend_Db_Table_Abstract
{
function __construct(array $config) {
parent::__construct($config);
}
}
및 컨트롤러/액션이를 사용하는 :
/**
* Supported params for $config are:
* - db = user-supplied instance of database connector,
* or key name of registry instance.
* - name = table name.
* - primary = string or array of primary key(s).
* - rowClass = row class name.
* - rowsetClass = rowset class name.
* - referenceMap = array structure to declare relationship
* to parent tables.
* - dependentTables = array of child tables.
* - metadataCache = cache for information from adapter describeTable().
*/
$username = $form->getValue('username');
$config = array('name'=> $username, 'primary' => 'id');
$model = new Application_Model_DbTable_Users($config);//This should setup your table
$result = $model->fetchAll(); //perform queries or execute methods defined in DbTable model
아니면 그냥 컨트롤러/액션 알몸 Zend_Db_Table 사용할 수 있습니다
$username = $form->getValue('username');
$db = new Zend_Db_Table($username);
$result = $db->fetchAll();
행운을 빌어 요 ...
관련 문제
- 1. hbm.xml을 사용하여 여러 클래스를 하나의 테이블에 매핑한다.
- 2. Hibernate2 하나의 클래스를 여러 테이블에 매핑
- 3. 클래스를 생성하거나 생성해야합니까?
- 4. 모델을 여러 데이터베이스 테이블에 매핑
- 5. FluentNhibernate, 클래스를 여러 테이블에 매핑하십시오.
- 6. SSIS가 MySQL 테이블에 액세스합니다.
- 7. 여러 모델을 하나의 연결로 집계
- 8. 하나의 모델을 사용하여 하나의 상점에 여러 요청의 데이터를로드하는 방법
- 9. 하나의 모델을 가진 여러 개의 컨트롤러
- 10. GROUP_CONCAT 하나의 쿼리에 여러 테이블에
- 11. 하나의 SQLAlchemy 모델을 사용하여 두 개의 테이블에 저장하는 방법
- 12. 테이블에 모델을 추가하려면 어떻게합니까?
- 13. 중첩 된 객체에 동적으로 액세스합니다.
- 14. 테이블에 여러 행을 동적으로 삽입하기
- 15. 하나의 xib를 여러 개의보기 컨트롤러와 함께 사용하려면 어떻게해야합니까?
- 16. 하나의 테이블에 여러 개의 외래 키가 하나의 다른 테이블에 mysql에
- 17. SQLAlchemy - 하나의 클래스를 두 개의 테이블에 매핑하기
- 18. 동적으로 여러 클래스를 추가하는 body_class()
- 19. Django 여러 모델을 하나의 템플릿으로 전달
- 20. grails는 동적으로 도메인 객체에 액세스합니다.
- 21. 동적으로 하나의 엔티티에 여러 테이블 매핑
- 22. CakePHP에서 스키니 컨트롤러와 뚱뚱한 모델을 만들려고하는 시도
- 23. Yii, 하나의 텍스트 상자를 사용하여 여러 모델을 업데이트하십시오.
- 24. 하나의 컨트롤러 동작에서 모델을 여러 번 업데이트하십시오.
- 25. 하나의 양식으로 여러 모델을 편집하는 방법은 무엇입니까?
- 26. 여러 테이블의 데이터를 하나의 테이블에 삽입하는 방법
- 27. WPF - XAML에서 컬렉션의 특정 항목에 동적으로 액세스합니다.
- 28. 자바 스크립트를 사용하여 하나의 웹 페이지에서 여러 테이블에 동적으로 행 추가하기
- 29. 레일스 3 데이터베이스 테이블에 저장된 속성으로 모델을 동적으로 생성합니다.
- 30. 여러 테이블에 대해 Zend 모델을 함께 설계 하시겠습니까?
기본 매퍼 클래스 란 무엇입니까? dbtable, 모델 및 매퍼에서 무엇을 가질 수 있습니까? – shorif2000
다른 매퍼 클래스를 만들기 위해 확장 할 수있는 클래스. – RockyFord