0

我正在尝试在 CodeIgniter 中使用数据映射器。我已经使用安装说明进行了设置

<?php
class Users extends DataMapper{

function Users(){
    parent::DataMapper();
}

function create($username, $hashed_password, $salt, $department_id, $role_id){
    $user = new User();
    $user->username = $username;
    $user->hashed_password = $hashed_password;
    $user->salt = $salt;
    $user->department_id = $department_id;
    $user->role_id = $role_id;

    $user->save();
}

我已经在 database.php 上设置了数据库信息,我还自动加载了 datamapper 和数据库库。这是我得到的错误:

Error Number: 1146

Table 'rpt.datamappers' doesn't exist

DESCRIBE `DataMappers`

Filename: D:\web_files\tester\php\ci_tester\system\database\DB_driver.php

Line Number: 330

我错过了什么?

4

1 回答 1

1

我认为您在示例中某处的类名错误,您的类称为“Users”,但在创建方法中您称为“new User”。

错误消息“表 'rpt.datamappers' 不存在”实际上来自您的数据库。看起来生成表名的 automagick 使用了错误的类名(DataMapper)而不是“User(s?)”,尝试像这样将表名显式设置为 DataMapper 后代类,以确认:

class Users extends DataMapper{
    public $table = 'users';
    // ...
}

另外,如果您只想委托给父构造函数,请不要用您自己的构造函数覆盖它,特别是如果您不保留方法的签名。

于 2012-07-13T09:34:20.160 回答