0

CodeIgniter で datamapper を使用しようとしています。インストール手順を使用して既にセットアップしました

<?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」と呼ばれますが、create メソッドでは「new User」と呼びます。

「テーブル 'rpt.datamappers' が存在しません」というエラー メッセージは、実際にはデータベースからのものです。テーブル名を生成する automagick が「User(s?)」ではなく間違ったクラス名 (DataMapper) を使用したようです。確認のために、次のように DataMapper の子孫クラスにテーブル名を明示的に設定してみてください。

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

また、親コンストラクターに委譲したいだけの場合は、特にメソッドの署名を保持しない場合は、独自のコンストラクターでオーバーライドしないでください。

于 2012-07-13T09:34:20.160 に答える