Codeigniter MY_Model组合主键

3

我正在使用一个名为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个回答

1

不要因为你使用的自定义库不完全支持你需要的内容而牺牲你的数据库结构。

然而,有一个解决方法:

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

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

$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)即可。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接