带有codeigniter的Datamapper可以保存多对多的关系

时间:2014-01-21 12:21:39

标签: php mysql codeigniter many-to-many codeigniter-datamapper

我有三个table company,group和company_group。

我在保存公司时从帖子中获取价值。

在我的公司表单中,我有多个选择框,其中包含一个组列表。

我的公司正在获得正确的保存但现在我想在company_group表中添加记录,其中包含公司和所选组的最后插入ID。

我在公司和集团公司都设置了has_many,但无法在company_group表中保存多条记录,所以请帮我解决。

公司模式

class Company extends DataMapper {
var $has_one=array("group");
function __construct() {
   parent::DataMapper();
}
}

组模型

class Group extends DataMapper {
 var $has_many=array("company");
function __construct() {
    parent::DataMapper();
    }
}

公司控制人员

class Company_c extends CI_Controller {
 public function index() {

    $company = new company();
    $group=new group();
    $company->id=1;
    $group->id=2;
    $group->id=4;
    $company->save($group);

  }

}

请帮我解决这个问题

1 个答案:

答案 0 :(得分:1)

您没有正确加载公司或组对象。实例化公司时,您需要执行以下操作:

$company = new Company();
$company->where('id', 1)->get();

,作为速记更快(只要您使用id属性):

$company = new Company(1);

(请注意,类名区分大小写。)

然后对要加载的组执行相同的操作:

$groups = new Group();
$groups->where_in('id', array(2, 4)->get();

然后,当两者都被实例化时,您可以一次性保存公司及其组:

$company->save($groups);

确保彻底浏览DataMapper文档,无法更清楚地解释它: http://datamapper.wanwizard.eu/pages/save.html#Relationship