我正在使用codeigniter框架运行应用程序。我有一个数据库。我想实现datamapper ORM。因为对于datamapper-“每个表必须有一个名为id的主键”。
我在所有表中都有一个自动增量整数字段。但是在所有情况下列名都不是“id”。在我的user
表中,自动增量整数列名称为user_id
而不是id
。我需要对Datamapper进行哪些更改?
A Database Error Occurred
Error Number: 1054
Unknown column 'id' in 'where clause'
SELECT *
FROM (`user`)
WHERE `id` = 200
Filename: D:\Projects\DealVector\dealvector\system\database\DB_driver.php
Line Number: 330
答案 0 :(得分:0)
除了编辑本机数据映射库之外,我没有找到任何解决方案。我修改了/application/libraries/datamapper.php中的datamapper类中的函数_get_by(),如下所示。我在模型中添加了var $table = 'user';
var $id = 'user_id';
,并在datamappper库中添加了if($field=='id'){
$field = $this->id;
}
。
/**
* Get By
*
* Gets objects by specified field name and value.
*
* @ignore
* @param string $field Field to look at.
* @param array $value Arguments to this method.
* @return DataMapper Returns self for method chaining.
*/
private function _get_by($field, $value = array())
{
//Custom Change
if($field=='id'){
$field = $this->id;
}
if (isset($value[0]))
{
$this->where($field, $value[0]);
}
return $this->get();
}