Php 带有codeigniter的Datamapper保存多对多关系
我有三个表公司,集团和集团公司 我在拯救一家公司的同时,也从帖子中获得了价值 在我的公司表格中,我有多个选择框,其中有一个组列表 我的公司已正确保存,但现在我想在company_group表中添加记录,其中包含上次插入的公司id和所选组 我在公司和集团两个模型中都设置了多个记录,但无法在公司和集团表中保存多个记录,所以请帮我解决这个问题 公司模式Php 带有codeigniter的Datamapper保存多对多关系,php,mysql,codeigniter,many-to-many,codeigniter-datamapper,Php,Mysql,Codeigniter,Many To Many,Codeigniter Datamapper,我有三个表公司,集团和集团公司 我在拯救一家公司的同时,也从帖子中获得了价值 在我的公司表格中,我有多个选择框,其中有一个组列表 我的公司已正确保存,但现在我想在company_group表中添加记录,其中包含上次插入的公司id和所选组 我在公司和集团两个模型中都设置了多个记录,但无法在公司和集团表中保存多个记录,所以请帮我解决这个问题 公司模式 class Company extends DataMapper { var $has_one=array("group"); function __
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);
}
}
请帮我解决这个问题您没有正确加载公司或组对象。当您实例化一家公司时,您需要执行以下操作:
$company = new Company();
$company->where('id', 1)->get();
或者,速记更快(只要使用id
属性):
(请注意,类名区分大小写)
然后对要加载的组执行相同的操作:
$groups = new Group();
$groups->where_in('id', array(2, 4)->get();
然后,当两个都实例化时,您可以一次性保存公司及其组:
$company->save($groups);
确保您彻底阅读了DataMapper文档,它的解释非常清楚:
$company->save($groups);