我有两个表,例如
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)
每次向Lesson添加行时,都可以通过PHP增加User.count 但是当你向Lesson添加一行或从Lesson
中删除一行时,你必须编写电源线方法B)
使用PrePersist或PreUpdate(我使用的是教义2) 但是,当触发课程实体的PreUpdate时,是否可以访问用户表?
方法C)
你可以连接一些mysql本机方法吗?
哪种方式是维持这些价值的最佳方法?
答案 0 :(得分:1)
您应该创建一个面向服务的应用程序。我假设您通过在控制器中执行以下操作来添加新课程:
$doctrine->getManager->persist($newLesson);
您应该创建一个服务,为您执行插入和更新计数,而不是这样做。像LessonService
这样的东西有以下方法:
public function addLesson($lessonModel) {
// Add the lesson to the database
// Increment the counter here
}