CodeIgniter DataMapper表名覆盖不起作用

时间:2016-04-20 22:15:41

标签: php mysql codeigniter datamapper

我刚刚使用CodeIgniter设置DataMapper并根据需要编写模型。

但是我似乎错过了一些东西,因为当我运行查询时,DataMapper无法看到表名覆盖并且认为根本没有表。

有趣的是,如果我删除覆盖,它可以正常工作(虽然有错误说自动生成的表格不存在)。

型号代码:

class Activity extends Datamapper {

var $table = 'activity_log';

var $has_one = [
    'user'
]; 

}

控制器代码:

$activity = new Activity(1);

错误:

Error Number: 1064 
You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right
syntax to use near 'WHERE `.`id` = 1' at line 2

SELECT * WHERE `.`id` = 1

正如我上面提到的,如果我删除var $ tables ='activity_log';然后它会推迟回到表格'活动'。

1 个答案:

答案 0 :(得分:0)

  

规则

     

DataMapper模型必须命名为对象的单数形式   名称,大写第一个字母。所以对于一个用户对象,   DataMapper模型将命名为User。该模型应该有一个   数据库中的相应表命名为小写,复数形式   对象名称的版本。因此,对于名为User的DataMapper模型,   table将被命名为users。对于名为Country的DataMapper模型,   表将被命名为国家。

     

在大多数情况下,单数和复数版本之间的差异   对象名称只是在末尾添加字母s的问题。

您的模型应命名为Activity_log

Docs