어떻게 atk4에서 다중 테이블 업데이트/삭제를 할 수 있습니까?AtK4에서 다중 테이블 업데이트/삭제
답변
당신은 모델 수준에서 관련 개체를 추가 할 수 있습니다 :이, 당신은 항상 당신의 "편집"에 대한 사용자 지정 처리기를 만들 수 있습니다 및 "삭제"버튼을 사용하여 작업을 수행하는 옵션이 아닌 경우
https://stackoverflow.com/a/7466839/204819
내부 ORM 또는 심지어 모델 수준.
beforeInsert, afterInsert, beforeDelete, afterDelete 및 beforeUpdate afterUpdate 함수를 사용하여 데이터베이스에서 추가 처리를 수행 할 수 있습니다. 예를 들어 웹 루트에서 ATK 4.1.3의 압축을 푼 설치를 사용하면 아래에 ATKHOME이라고하는 agiletoolkit이라는 폴더가 생성됩니다.
세 개의 필드 (id, tasktype_desc 및 budget_code)와 id 및 budget_code 만있는 다른 테이블 TASKTYPE_BUDGET을 사용하여 mysql에서 간단한 테이블 TASKTYPE을 생성하십시오.
가있는 테이블에 대한 두 가지 모델을 만들기 LIB ATKHOME// 모델 다음과 같이 이노 디비를 사용하여 외부 키를 가지고있는 경우
class Model_TaskType extends Model_Table {
public $entity_code='tasktype';
public $table_alias='ty';
function defineFields(){
parent::defineFields();
$this->newField('id')
->mandatory(true);;
$this->newField('tasktype_desc')
->mandatory(true);
$this->newField('budget_code')
->mandatory(true);
}
public function afterInsert($new_id){
$ttb=$this->add('Model_TaskTypeBudget');
$ttb->set('id',$new_id)
->set('budget_code',$this->get('budget_code'));
$ttb->insert();
return $this;
}
public function beforeUpdate(&$data){
$ttb=$this->add('Model_TaskTypeBudget')->loadData($data['id']);
$ttb->set('budget_code', $data['budget_code']);
$ttb->update();
return $this;
}
public function beforeDelete(&$data){
$ttb=$this->add('Model_TaskTypeBudget')->loadData($data['id']);
$ttb->delete();
return $this;
}
}
주 (존재 나던 경우 모델 디렉토리를 작성해야 할 수도 있습니다) 당신은 올바른 순서로 삽입 및 삭제를해야합니다. TaskTypeBudget에서 TaskType에 대한 ID의 외래 키가 있다면 제약 조건 위반을 방지하기 위해 beforeDelete와 afterInsert를 사용해야합니다.
class Model_TaskTypeBudget extends Model_Table {
public $entity_code='tasktype_budget';
public $table_alias='tyb';
function defineFields(){
parent::defineFields();
$this->newField('id')
->mandatory(true);
$this->newField('budget_code')
->mandatory(true);
}
}
그리고이
class page_tasktype extends Page {
function init(){
parent::init();
$p=$this;
$tt=$this->add('Model_TaskType');
$crud=$p->add('CRUD');
$crud->setModel($tt, array('id','tasktype_desc', 'budget_code'));
if($crud->grid)
$crud->grid->addPaginator(10);
}
}
주와 같은 ATKHOME/페이지의 페이지도 개방 <를 포함 조심? PHP는 각 클래스 라인 전에 태그를 닫지 만 폐쇄를 포함하지 마십시오? > 이는 Ajax에서 오류를 일으킬 수 있기 때문입니다.
ATKHOME/config-default.php에서 mysql 연결 사용자 이름과 암호를 root/root에서 mysql 데이터베이스의 사용자 및 암호로 수정하십시오.
$config['dsn']='mysql://atktest:[email protected]/atktest';
및 주석 모든 페이지 (당신은 또한 단지 $ this-> dbConnect를 (추가 할 수 있습니다) 데이터베이스에 연결할 수 있도록 라인 8 ATKHOME/lib 디렉토리/Frontend.php을 수정;. 페이지에 라인
같은 Frontend.php에서class Frontend extends ApiFrontend {
function init(){
parent::init();
$this->dbConnect(); //uncommented
는, 우리의 새로운 페이지를 추가하려면 기본 메뉴에 버튼을 추가 라인 (50)의 주위에 다음을 삽입합니다.
->addMenuItem('CRUD Test', 'tasktype')
는 이제 웹 브라우저로 이동 http://localhost/agiletoolkit를 입력 첫 페이지에서 CRUD Test를 클릭하십시오. 행을 추가하면 TASKTYPE에 행이 추가되고 동일한 id 및 budget_code가 TASKTYPE_BUDGET에 추가됩니다. budget_code를 수정하면 두 테이블 모두에 반영되고 행을 삭제하면 두 테이블에서 모두 삭제됩니다.
일단 ATk4가 제공하는 기능을 알고 있으면 얼마나 간단하고 간단합니까?
- 1. 다중 테이블 또는 다중 스키마
- 2. atk4에서 하위/하위 레코드를 삭제하는 방법은 무엇입니까?
- 3. MySQL 다중 테이블 링크
- 4. 다중 테이블 쿼리 참여
- 5. Oracle의 다중 테이블 업데이트
- 6. PHPWord 다중 테이블 만들기
- 7. django에서 다중 테이블 상속
- 8. HTML 다중 테이블 배치
- 9. 다중 테이블 페이지 지정
- 10. 다중 테이블 쿼리 안드로이드
- 11. mysql 다중 테이블 만들기
- 12. DAO 패턴 다중 테이블
- 13. uiviewcontroller 다중 테이블 뷰
- 14. 다중 테이블 인터페이스를 조정하십시오
- 15. 다중 테이블 쿼리
- 16. 다중 테이블 업데이트 (MySQL)
- 17. MySQL 다중 테이블 쿼리
- 18. TableViewController의 다중 테이블 뷰
- 19. MySql 다중 테이블 제약
- 20. Sybase의 다중 테이블 업데이트
- 21. MySQL의 로직 다중 테이블
- 22. ZF2, 다중 테이블 추가
- 23. 다중 테이블 DELETE LIMIT
- 24. SSIS - 다중 테이블 삽입
- 25. MySQL 다중 테이블 쿼리
- 26. MVC가있는 다중 테이블 모델?
- 27. codeigniter 다중 테이블 조인
- 28. SQLite 다중 테이블
- 29. SQLite는 다중 테이블
- 30. SQL 다중 테이블
모델을 사용하여 예제를 추가했습니다. 편집 및 삭제 버튼을 재정의하는 데 필요한 코드 예제가 있습니까? 감사 –