0

次のような2つのテーブルがあります

User
ID  name   count
1   cat    2
2   dog    1
3   rabbit 1
4   tiger  0


Lesson
ID  time   student
1   09:00  1(cat)
2   10:00  1(cat)
3   13:00  2(dog)
4   15:00  3(rabbit)

User.count は、各ユーザーが Lesson テーブルに表示される回数を意味します。この数字を正しく保ちたい。

方法 A)

レッスンに行を追加するたびにPHPで User.count をインクリメントできますが、レッスンに行を追加するときとレッスンから行を削除するときの両方でコードを記述する必要があります

方法 B)

PrePersist または PreUpdate を使用しています (私は doctrine 2 を使用しています) しかし、レッスンエンティティの PreUpdate がトリガーされたときに User テーブルにアクセスすることは可能ですか?

方法 C)

いくつかのmysqlネイティブメソッドを接続できますか?

これらの値を維持するための最良の方法はどれですか??

4

1 に答える 1

1
  • prePersist/postPersist などの関数で他のテーブル/エンティティにアクセスすることはできません。
  • ネイティブのデータベース アクセス関数は使用しないでください。

よりサービス指向のアプリケーションを作成する必要があります。controller で次のようにして、新しいレッスンを追加するとします。

$doctrine->getManager->persist($newLesson);

その代わりに、カウントの挿入と更新を行うサービスを作成する必要があります。次のメソッドを持つようなものLessonService

public function addLesson($lessonModel) {
    // Add the lesson to the database

    // Increment the counter here

}
于 2013-06-21T06:57:57.217 に答える