我的多層次MVCGrid/MVCForm/MVCGrid傳奇繼續....MVCGrid W /擴展(父)調用的MVC格式(子)和加載子記錄 - 更新
我使用與擴展按鈕嵌套MVCGrids調用MVCForms來執行不同的數據操作。此進程中的所有mySQL表都有一個「id」數據元素,並且這是每個表的主鍵。在需要時使用_id命名約定,每個mySQL表也有一個指向其父項的指針。所有的外鍵都已經在mySQL中設置,以此方式工作。
父的模型是這樣的:
類Model_uidcontrol擴展Model_Table {
public $entity_code='uidcontrol';
public $table_alias='uc';
function init(){
parent::init();
對孩子的模型是這樣的:
類Model_uiddetails擴展Model_Table {
public $entity_code='uiddetails';
public $table_alias='ud';
function init(){
parent::init();
每個模型都有自己的「id」和一個指針t o其父母。
在MVCGrid(父)的擴欄調用此子功能:
$um=$this->add('MVCForm');
$um->setModel('uiddetails')
->loadData(($_GET['uidcontrol_id']));
我在子模型嘗試這樣做:
$this->addRelatedEntity('uc','uidcontrol','uidcontrol_ID');
,這也:
$this->addField('uidcontrol_id')
->refModel('Model_uidcontrol')
->caption('System Info')
->visible(true);
我已經嘗試過每種技巧,並一起分別獲取兒童記錄與正確的父母進行協調。
調試()表示該
其中
ud.id = '121'
ud.uidcontrol_id = '121'
OK,我明白$ GET和它是如何工作的,以及如何,涉及到DSQL - 至少我覺得我做的。
我想不通的是如何告訴MVCForm使用「ud.uidcontrol_id =「121」通過$ GET建設數據加載DSQL時來 ,而不是使用‘ud.id’
在上面的例子中,有一個具有該id的父記錄「uidcontrol」。我強迫孩子記錄的'id'爲121,看看它是否會提取數據並將其顯示在表單中。好的,數據顯示應該如此。
當我嘗試該父其的 'id'= 10,調試()產生此
ud.id = '10'
ud.uidcontrol_id = '10'
並返回任何數據。有一個id = 10的uidcontrol記錄,但dsql也嘗試與ud.id = 10匹配。
我可以發佈更多我正在努力澄清我想要做什麼,如果有幫助。
理想情況下,我想告訴MVCForm「嘿!在構建dsql時不要使用'id'數據元素,而是使用我提供的數據元素。問題是,我無法弄清楚如何做到這一點......但我一路上學到了一堆東西。我認爲我可能在這裏「過度思考」某些東西。
感謝您的任何建議!
週一2月6注:
的var_dump($ _ GET);說:
的 'id'=>字符串 '10'(長度= 2)< === uidcontrol.id 'uidcontrol_id'=>字符串 '10'(長度= 2)< === uidcontrol.id
我寫這篇文章:
$um->setModel('uiddetails')
->addCondition('uidcontrol_id',($_GET['id']))
->loadData(($_GET['id']));
和SQL調試顯示了這個正在興建
其中
ud.id = '10'
ud.uidcontrol_id = '10'
問題是我只想要「ud.uidcontrol_id ='10'」。表uiddetails具有它自己的ID 125和uidcontrol_id值10.結果,查詢不會返回記錄。
我明白你寫什麼,但我遇到的問題是, 「addCondition」 被追加到預選賽:\t $ UM->則setModel( 'uiddetails') \t \t - > addCondition( 'uidcontrol_id',($ _ GET ['uidcontrol_id'])) \t \t - > loadData(($ _ GET ['uidcontrol_id'])); – 2012-02-06 13:52:41
根本不需要使用'loadData'!條件是識別兒童記錄的條件。 – 2012-02-06 16:27:15
經過很多工作,似乎MVCForm將使用'id'字段作爲條件,而不管它是什麼。 「setMasterField」附加到現有條件而不是替換它。 – 2012-02-07 21:07:44