首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Joomla1.6,component:如何在两个表之间使用m2m连接组件并在编辑页面中显示列表?

Joomla1.6,component:如何在两个表之间使用m2m连接组件并在编辑页面中显示列表?
EN

Stack Overflow用户
提问于 2011-04-01 10:35:07
回答 1查看 818关注 0票数 0

我是乔姆拉的新手!对组件开发也是新的。

我想要创建一个组件,它能够在两个表之间链接。

joomla诉1.6:

桌子的结构:

代码语言:javascript
复制
CREATE TABLE `#__a` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

B表的结构:

代码语言:javascript
复制
CREATE TABLE `#__b` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

AB表的结构:

代码语言:javascript
复制
CREATE TABLE `#__ab` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`id_a` int(11) NOT NULL,
`id_b` int(11) NOT NULL,
PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;

假设我们已经使用MVC for A和B (从hello world组件创建)创建了基本的创建、编辑页面和删除操作。从hellow教程中,我们可以清楚地了解文件和文件夹结构以及组件的代码,但是在本教程中只有一个表,但是这里有两个表和新的id表。

这意味着在我们正在开发的组件中,有两个子菜单。

在“编辑或新”页中。

  1. 有一个细节块,我们可以填充名称。(从本教程完成)
  2. 有B链接块,我们可以选择B(选择选项,可以选择更多的1)添加到A中,也可以显示我们添加的B列表。在列表中的每个项目中,它都有一个删除按钮或链接,以取消A和B之间的链接。

有什么好办法吗?

感谢和最诚挚的朋友们,

瑞茜

EN

回答 1

Stack Overflow用户

发布于 2011-07-06 22:27:24

首先,您需要一些逻辑来保存引用表中的结果,第二部分是检索要显示在用户端的数据。你需要一个模特:

代码语言:javascript
复制
class CompControllerA extends JControllerForm { 
   // Here put your save code
   //....
   function save() {
     $formData = JRequest::getVar('jform');
     $bRecords = $formData['bRecords'];
     $aRecordId = $formData['id'];
     $referenceModel->delete($aRecordId); // Delete all records that has same ID as current record
     foreach($bRecords as $row) {
        $data['id']=0;
        $data['a_id']=$aRecordId;
        $data['b_id']=(int)$row;
        $bModel->save($data);
     }

     // dont forget to call parent method
     parent::save();
   }
}

下一步是创建for时,从引用表中获取结果,并在表单中显示正确的结果。

下面是我构建的一个组件的一些示例代码。

代码语言:javascript
复制
class IbookModelExtra extends JModelAdmin
{
    protected function loadFormData()
    {
        $db =& $this->getDbo();
        $query = $db->getQuery(true);
        $query->select('b_id')->from('#__table_a_b')->where('a_id='.$data->id);
        $db->setQuery((string)$query);
        $data->b = $db->loadResultArray();
    }
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5512184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档