【问题标题】:How to use datamapper in CodeIgniter如何在 CodeIgniter 中使用数据映射器
【发布时间】:2012-07-13 08:14:33
【问题描述】:

我正在尝试在 CodeIgniter 中使用数据映射器。我已经使用installation instructions 进行了设置

<?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

我错过了什么?

【问题讨论】:

  • 您好,您使用的是最新的 CI 版本吗?
  • 是的,我不知道如何更新示例中的代码,因为它不是使用最新的 CI 版本实现的
  • 您使用的是旧版本的数据映射器。 Wanwizard现在正在开发。你应该使用他的版本,你可以在his website找到。
  • 据我所知。它工作正常,没有错误。我正在使用最新的数据映射器和最新的 CI。如果您需要文件示例,请告诉我。
  • @Ivan:是的,我想我需要一个样本,因为我已经尝试安装最新的数据映射器,但我仍然收到此错误:调用未定义的方法 CI_DB_mysqli_driver::dm_call_method()

标签: php codeigniter


【解决方案1】:

我认为您在示例中的某个地方使用了错误的类名,您的类名为“Users”,但在创建方法中您调用了“new User”。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 2014-07-17
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多