0

管理インターフェースとゲームの両方で使用される PHP バックエンド アプリケーションがあります。PHP の使い方は知っていますが、Zend と Doctrine には詳しくありません。

MySQL には 2 つのテーブル (学校用と学生用) しかありませんが、名前のプレフィックスを変更したいと思います。それらはゲームの以前のリリースを参照しているためです。

つまり、テーブルの名前を変更し、新しい名前を使用するようにすべての PHP 参照を変更しました。すべての Zend および Doctrine フォルダーに古い名前の痕跡はもうありません。しかし、Web アプリケーションはまだ古い名前を探しているため、失敗します。

エラーは次のとおりです: SQLSTATE[42S02]: ベース テーブルまたはビューが見つかりません: 1146 テーブル 'db1.neverland_schools' が存在しません

テーブル名を neverland_schools から Adventure_schools に変更しました。引き続き古いテーブル名が検索されます。

私が疑うのは、これがcacheであることです。しかし、サーバーへのコマンド ライン アクセスも、コマンド ライン経由で Doctrine と対話した経験もありません。

キャッシュに問題がある場合、PHP からキャッシュをリセットする方法はありますか? また、他に何か問題がある場合は、知りたいです。

ありがとう!

4

2 に答える 2

0

基本クラスを定義している場合学校と生徒のbaseクラスの名前を変更する必要があります。基本クラスのパスは、構成ファイルまたはブートストラップファイルにあります。

以下のメソッドの最初の行のように、テーブル名を明示的に設定しようとしたことがない場合は、

class Adventure_Schools extends Doctrine_Record { 
    public function setTableDefinition () { 
        $this->setTableName('adventure_schools');
...
于 2013-02-28T14:51:05.763 に答える
0

キャッシュ データを削除できます。

  1. サーバーの一時フォルダーをエモートできます

  2. Doctrineキャッシュを削除

    $deleted = $cacheDriver->deleteAll();

たぶん、プロキシフォルダーも空にする必要があります。

ドライバーに応じて、メタデータでテーブル名を変更したことを確認できます。yaml または xml を使用している場合、plin テキスト検索はファイル形式を考慮していない可能性があります。

注釈

// entities/Product.php
/**
 * @Entity **@Table(name="products")**
 **/

xml

<entity name="Product" table="products">

yaml

# config/yaml/Product.dcm.yml
Product:
  type: entity
  table: products
于 2013-02-28T18:07:42.680 に答える