4

検索すると、同様の問題を抱えている人々の結果がたくさん出てきましたが、それらは常に関連付けエラーに関連していました. データベースのテーブルに単純なテキスト フィールドを追加しようとしていますが、私の人生では、今回は何が違うのかわかりません。

「record_checksum」フィールドを 4 つの異なるエンティティに追加しましたが、ここでは例を簡略化するために 1 つだけを使用します。(4つすべてで同じエラーが発生します)。

これは私の Entity\Cloud.php ファイルの例で、' record_checksum ' フィールドが一番下に追加されています:

use Doctrine\ORM\Mapping as ORM;

namespace Entity;

/**
 * Entity\Cloud
 *
 * @orm:Table(name="cloud")
 * @orm:Entity
 * @orm:HasLifecycleCallbacks
 */
class Cloud
{
    /**
     * @var integer $id
     *
     * @orm:Column(name="id", type="integer", length="13")
     * @orm:Id
     * @orm:GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var float $position_x
     *
     * @orm:Column(name="position_x", type="float", length=9)
     */
    private $position_x;

    /**
     * @var float $position_y
     *
     * @orm:Column(name="position_y", type="float", length=9)
     */
    private $position_y;

    /**
     * @var string $commit_group
     *
     * @orm:Column(name="commit_group", type="string", length=32, nullable=true)
     */
    private $commit_group;

    /**
     * @var string $commit_key
     *
     * @orm:Column(name="commit_key", type="string", length=13, nullable=true)
     */
    private $commit_key;

    /**
     * @var string $record_checksum
     *
     * @orm:Column(name="record_checksum", type="string", length=32, nullable=true)
     */
    private $record_checksum;

クラスの残りの部分は getter/setter メソッドなので、省略します。Entity ファイル全体を表示するために、pastebin ( http://pastebin.com/9LheZ6A1 ) に配置しました。数週間前に追加したばかりの「commit_key」は問題ありません。

次に、スキーマを更新します。

$ doctrine orm:schema-tool:update --dump-sql
ALTER TABLE cloud ADD record_checksum VARCHAR(32) DEFAULT NULL;
$ doctrine orm:schema-tool:update --force
Updating database schema...
Database schema updated successfully!

このフィールドが DB テーブルに存在することを確認しました。

ただし、次のような単純な DQL クエリを実行すると:

$dql =  "SELECT c.id AS id, c.commit_key AS key, c.record_checksum AS checksum ".
                "FROM Entity\\Cloud c WHERE c.commit_group = :commit_group";

エラーが発生します:

 [Semantical Error] line 0, col 42 near 'record_checksum': Error: Class Entity\Cloud has no field or association named record_checksum, 

しばらくの間、この壁に頭をぶつけてしまいました。私は本当にばかげたことを見落としていると確信しています。どんな助けでも大歓迎です!-ニック

4

2 に答える 2

5

次のことを試してください。

  1. 構成またはPHPコードを含む可能性のあるキャッシュをすべてクリアします。
  2. 最初の解決策が機能しなかった場合に備えて、フィールドの名前を変更します。
于 2012-05-23T13:14:56.013 に答える
1

問題の に移動しEntity、変数名を確認します。のようなもので、クエリでTESTVar使用しようとするtestVarと、変数が に存在しないというエラーが表示されますEntity

TESTVarの代わりに使用するようにクエリを変更するtestVarと、機能します。

于 2015-10-08T21:23:29.100 に答える