0

デフォルトのテーブル名の変更に関して問題が発生しました

class Application_Model_DbTable_Game extends Zend_Db_Table_Abstract
{

protected $_name = 'games';

エラー:

メッセージ: SQLSTATE[42S02]: ベース テーブルまたはビューが見つかりません: 1146 テーブル 'gamenomad_dev.game' が存在しません

助けてください...簡単なはずです!

*EDIT ここでの問題は、Zend Framework がデフォルトの「game」から「games」に変更されたテーブル名を検出することになっていることです。

4

2 に答える 2

0

問題の実際の行とスタックトレースを表示します。実際のテーブル名を読み取らない方法でクエリを生成している可能性があります。

于 2012-01-13T16:38:32.047 に答える
0

ZF では、データベース テーブルをモデル化するためにハードコーディングする必要があります。データベースの変更はスキャンされません。次の 2 つの方法があります。

テーブル名でクラスを作成

class Game extends Zend_Db_Table_Abstract
{
    // default table name: game
}

ZF のデフォルト パスを使用する場合は、DBTable モデルをapplication/models/dbtableディレクトリに配置し、クラスに次のような名前を付ける必要があります。そうすれば、ZF はテーブルApplication_Model_DbTable_Gameを探す必要があることを認識します。game

任意の名前でクラスを作成

たとえばExtraGameTable、テーブル名を表示するようにパラメータを設定します。

class ExtraGameTable extends Zend_Db_Table_Abstract
{
    protected $_name = 'game';
}

ドキュメントに記載されているとおり: http://framework.zend.com/manual/en/zend.db.table.html

テーブル名を指定しない場合、デフォルトでクラスの名前になります。このデフォルトに依存する場合、クラス名は、データベースに表示されるテーブル名のスペルと一致する必要があります。

それをいくつかの構成ファイルと組み合わせて、そこからテーブル名をロードしようとするかもしれませんが、それでも、ZF は基礎となるデータベースの変更について何も知りません。

于 2012-01-13T14:02:31.437 に答える