2

こちらのコードをご覧ください: http://pastie.org/1092106

ブログで createPost メソッドを呼び出すと、次のような例外が発生し続けます。

At line 474 in lib/Doctrine/ORM/Persisters/BasicEntityPersister.php - Undefined index: id

ああ、また...ページの読み込みごとに $_SESSION['User'] を再生成するため、オブジェクトはエンティティマネージャーなどから切り離されません。

Doctrine2 が想定しているスキーマは次のとおりです。

Array (
    [0] => CREATE TABLE Note (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, text LONGTEXT NOT NULL, created DATETIME NOT NULL, PRIMARY KEY(id)) ENGINE = InnoDB
    [1] => CREATE TABLE BlogPost (note_id INT NOT NULL, blog_name VARCHAR(255) NOT NULL, PRIMARY KEY(note_id, blog_name)) ENGINE = InnoDB
    [2] => CREATE TABLE User (email VARCHAR(95) NOT NULL, id INT NOT NULL, password VARCHAR(32) NOT NULL, alias VARCHAR(15) DEFAULT NULL, firstName VARCHAR(20) DEFAULT NULL, lastName VARCHAR(20) DEFAULT NULL, enabled TINYINT(1) NOT NULL, created DATETIME NOT NULL, UNIQUE INDEX User_id_uniq (id), PRIMARY KEY(email)) ENGINE = InnoDB
    [3] => ALTER TABLE Note ADD FOREIGN KEY (user_id) REFERENCES User(id)
    [4] => ALTER TABLE BlogPost ADD FOREIGN KEY (note_id) REFERENCES Note(id)
    [5] => ALTER TABLE BlogPost ADD FOREIGN KEY (blog_name) REFERENCES Blog(name)
)

うまくいけば、誰かが助けてくれるでしょう!

4

1 に答える 1

0

したがって、さらに調べてみると、 User クラスの $id フィールドに次の注釈を追加すると、機能するように見えます。

* @Id

おそらく、この時点で、関係に参加する前に、プロパティが一意の識別子である必要がある理由を誰かが理解するのを手伝ってくれるでしょうか?

于 2010-08-14T19:23:00.013 に答える