addRef 사용법을 배우려고합니다.CRUD와 함께 addRef를 사용합니다.
나는 addRef에게 어떤 필드가 Master의 'id'와 연결되어야 하는지를 말해야한다고 생각한다.
<?php
class Model_TestMaster extends Model_Table {
public $table='testmaster';
function init(){
parent::init();
$this->addField('Description');
$this->hasMany('testslave');
}
}
과 '노예'테이블 : 다음
<?php
class Model_TestSlave extends Model_Table {
public $table='testslave';
function init(){
parent::init();
$this->addField('MastersID');
$this->addField('SubDescription');
}
}
와 나는이 같은 '페이지'설정 : 테스트하려면
, 나는 '마스터'테이블이
<?php
class page_test extends Page {
function init(){
parent::init();
$page=$this;
$tabs = $this->add('Tabs');
$crud = $tabs->addTab('Master')->add('CRUD');
$crud->setModel('testmaster');
if (! $crud->isEditing()) {
// add subCRUD
$sub_crud = $crud->addRef('testslave', array(
'extra_fields' => array('MastersID','SubDescription')));
}
}
나는 addRef에게 어떤 필드가 Master의 'id'와 연결되어야하는지 알려줄 필요가 있다고 생각 하는가?
이 확인 표시,하지만 난 노예를 확장하기 위해 버튼을 누를 때 나는 수 : 0
추가 정보 :
응용 프로그램 오류 :
BaseException, 코드를 찾을 수없는 자식 요소를
Raised by object: Object Model_TestSlave(51cf4a73__ter_testslave_model_testslave)
element: testmaster_id
:
Stack trace:
File Object Name Stack Trace
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/BaseException.php :63 BaseException BaseException->collectBasicData(Null)
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/AbstractObject.php :545 BaseException BaseException->__construct("Child element not found", Null)
/ : 51cf4a73__ter_testslave_model_testslave Model_TestSlave->exception("Child element not found")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib\SQL/Model.php :107 Loggercall_user_func_array(Array(2), Array(1))
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/AbstractObject.php :331 51cf4a73__ter_testslave_model_testslave Model_TestSlave->exception("Child element not found")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib\SQL/Model.php :275 51cf4a73__ter_testslave_model_testslave Model_TestSlave->getElement("testmaster_id")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib\SQL/Many.php :79 51cf4a73__ter_testslave_model_testslave Model_TestSlave->addCondition("testmaster_id", "0000000001")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib\SQL/Model.php :248 51cf4a73__ter_testslave SQL_Many->ref(Null)
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib\View/CRUD.php :316 asol_Test_tabs_view_htmlelement_crud_model_testmaster Model_TestMaster->ref("testslave")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\page/test.php :15 asol_Test_tabs_view_htmlelement_crud CRUD->addRef("testslave", Array(1))
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/AbstractObject.php :306 asol_Test page_test->init()
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/ApiFrontend.php :130 asol Admin->add("page_Test", "Test", "Content")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/ApiWeb.php :428 asol Admin->layout_Content()
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/ApiFrontend.php :39 asol Admin->addLayout("Content")
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb\atk4\lib/ApiWeb.php :275 asol Admin->initLayout()
C:\Program Files (x86)\EasyPHP-DevServer-13.1VC11\data\localweb/index.php :15 asol Admin->main()
, 당신을 감사
마크
완벽하게 작동합니다! 고맙습니다. – Mark
당신을 진심으로 환영합니다! hasMany와 hasOne을 관련 모델에 사용하는 것이 거의 항상 좋습니다. 두 가지가 모두있는 경우이 관계를 사용하여 앞뒤로 탐색 할 수 있습니다. 그렇지 않으면 한 방향으로 만 탐색 할 수 있으며 문제를 해결할 수도 있습니다. 더 나은 항상 둘 다 사용하면 괜찮을거야 :) – DarkSide