繁体   English   中英

CodeIgniter DataMapper表名覆盖不起作用

[英]CodeIgniter DataMapper table name override not working

我刚刚使用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'; 然后它将推迟回到寻找表'活动'应该。

规则

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

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

您的模型应命名为Activity_log

文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM