Codeigniter MY_Model复合主键

时间:2013-06-12 09:57:16

标签: codeigniter model primary-key composite-primary-key

我正在使用基类MY_Model来访问数据库,该数据库包含所有CRUD方法。我正在使用的模型是Jens Segers的MY_Model:

https://github.com/jenssegers/CodeIgniter-My-Model

现在,我的数据库中有一个包含复合主键(article_id和tag_id)的表。通常,当主键仅包含一个ID时,我可以使用:

protected $primary_key = "id";

是否有可能存在复合主键,还是应该添加列ID作为唯一的主键?

提前致谢。

1 个答案:

答案 0 :(得分:1)

不要牺牲数据库结构,因为您使用的自定义库并不完全支持您所需的。

但是有一个解决方法:

该库使用CI的数据库库并使用$primary_key函数中的db->where()

该函数接受以下参数格式:

$this->db->where('name', $name);
$this->db->where($array);
$this->db->where($where);//$where is a custom MySQL query string

因此,您无法通过设置:

来设置复合主键
$primary_key = array("article_id", "tag_id");

因为库不断使用上面where()方法的第一种方法。

相反,每次只使用get()提供insert()array("article_id" => $article_id, "tag_id => tag_id)(或其他)等方法。

如果您尝试插入与主键匹配的内容,数据库将抛出错误,因此您可以处理该错误。