我正在使用基类MY_Model来访问数据库,该数据库包含所有CRUD方法。我正在使用的模型是Jens Segers的MY_Model:
https://github.com/jenssegers/CodeIgniter-My-Model
现在,我的数据库中有一个包含复合主键(article_id和tag_id)的表。通常,当主键仅包含一个ID时,我可以使用:
protected $primary_key = "id";
是否有可能存在复合主键,还是应该添加列ID作为唯一的主键?
提前致谢。
答案 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)
(或其他)等方法。
如果您尝试插入与主键匹配的内容,数据库将抛出错误,因此您可以处理该错误。