Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 在不使用$related的情况下更新(保存和删除)关系->;get();_Codeigniter_Codeigniter Datamapper - Fatal编程技术网

Codeigniter 在不使用$related的情况下更新(保存和删除)关系->;get();

Codeigniter 在不使用$related的情况下更新(保存和删除)关系->;get();,codeigniter,codeigniter-datamapper,Codeigniter,Codeigniter Datamapper,我正在使用&。我知道如何去接近一个物体,我知道如何去接近它 在本例中,我有一个多对多关系,我想用表单中的新值更新它。现在我可以用这个来保存它们,效果很好: $ousergroupright = new Usergroupright; $usergrouprights = $ousergroupright->where_in('id', $this->input->post('usergrouprights'))->get(); $ousergroup = new Use

我正在使用&。我知道如何去接近一个物体,我知道如何去接近它

在本例中,我有一个多对多关系,我想用表单中的新值更新它。现在我可以用这个来保存它们,效果很好:

$ousergroupright = new Usergroupright;
$usergrouprights = $ousergroupright->where_in('id', $this->input->post('usergrouprights'))->get();

$ousergroup = new Usergroup;
$ousergroup->get_by_id($id);
$ousergroup->save($usergrouprights->all);
但这不会删除我在表单中“未选中”的记录。我需要删除我不想再关联的对象。最好的方法是什么(不使用自定义查询)

在保存之前使用
$ousergroup->where\u not\u in()
执行上述查询对我来说似乎有些过分(为什么查询数据库和构建对象只是为了删除关系?)


有什么想法吗?

有一种方法可以删除不想再关联的对象,而无需查询数据库和构建对象来删除关系。您可以使用实用程序函数query运行自定义SQL来删除所有不相关的对象,而无需执行数据库查询,如:

// Create usergroup object
$u = new Usergroup();

// your custom SQL query to delete the unrelated objects
$sql = "delete from usergrouprights where usergroup.id = ? and id usergrouprights.id not in (?)";

// Binding values
$binds = array($idUserGroup , $listOfSelectedItens);

// Run query to populate user object with the results
$u->query($sql);
有关DataMapper查询实用程序函数的详细信息

使用自定义查询是一个不错的解决方案,但我想使用该模型。当我更改模型的属性时,我不想在我的应用程序中搜索“自定义查询”…好吧,在这种情况下,我想你可以在你的问题中更具体一些,但好吧,我可以理解你不想使用自定义查询谢谢你的回答Marcelo,但我认为我的选项(选择all where!=…)和你的(自定义查询)都不是我想要的解决方案。必须有另一个(更好的)方法!
// Create usergroup object
$u = new Usergroup();

// your custom SQL query to delete the unrelated objects
$sql = "delete from usergrouprights where usergroup.id = ? and id usergrouprights.id not in (?)";

// Binding values
$binds = array($idUserGroup , $listOfSelectedItens);

// Run query to populate user object with the results
$u->query($sql);