【问题标题】:Codeigniter MY_Model composite primary keyCodeigniter MY_Model 复合主键
【发布时间】:2013-06-08 09:28:18
【问题描述】:
我正在使用一个基类 MY_Model 来访问数据库,其中包含所有 CRUD 方法。我使用的模型是 Jens Segers 的 MY_Model:
https://github.com/jenssegers/CodeIgniter-My-Model
现在,我的数据库中有一个包含复合主键(article_id 和 tag_id)的表。通常,例如,当主键仅包含一个 ID 时,我可以使用:
protected $primary_key = "id";
是否有可能使用复合主键,或者我应该添加一个列 ID 作为唯一的主键?
提前致谢。
【问题讨论】:
标签:
codeigniter
model
primary-key
composite-primary-key
【解决方案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()方法的第一种方法。
相反,每次只需使用array("article_id" => $article_id, "tag_id => tag_id) 提供get() 或insert()(或其他)等方法。
如果您尝试插入与您的主键匹配的任何内容,数据库将引发错误,因此您可以处理它。