[英]CodeIgniter/Datamapper: Two one-to-many relationships to the same table not working
[英]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.