【发布时间】:2012-02-05 05:09:40
【问题描述】:
我的多级 MVCGrid/MVCForm/MVCGrid 传奇继续......
我正在使用带有扩展按钮的嵌套 MVCGrids,这些按钮调用 MVCForms 来执行不同的数据操作。此过程中的所有 mySQL 表都有一个“id”数据元素,它是每个表的主键。每个 mySQL 表在必要时也使用 _id 命名约定指向其父表。所有外键都已在 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”和指向其父级的指针。
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);
我已经分别尝试了每种技术,并一起尝试了让子记录与适当的父级进行协调。
debug() 显示这个
在哪里
ud.id = '121'
ud.uidcontrol_id = '121'
好的,我了解 $GET 及其工作原理以及它与 dsql 的关系——至少我认为我了解。
我想不通的是如何告诉 MVCForm 使用“ud.uidcontrol_id = '121” 在构建用于数据加载的 dsql 时通过 $GET 而不是使用 'ud.id'
在上面的示例中,有一个父记录“uidcontrol”具有该 id。我将子记录的“id”强制为 121,以查看它是否会提取数据并在表单中显示。好的,数据显示正常。
当我尝试这个 'id' = 10 的父级时,debug() 会产生这个
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) 字符串'10'(长度=2)
我写这个:
$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。因此,查询不会返回记录。
【问题讨论】:
标签: atk4