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 作为唯一的主键?

提前致谢。

4

1 回答 1

1

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

但是有一个解决方法:

该库使用 CI 的数据库库并使用$primary_keyindb->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).

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

于 2013-11-09T15:39:45.700 回答