哪个是维护两个表值的最佳方法?

时间:2013-06-21 05:21:19

标签: symfony

我有两个表,例如

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本机方法吗?

哪种方式是维持这些价值的最佳方法?

1 个答案:

答案 0 :(得分:1)

  • 您无法访问prePersist / postPersist等函数中的其他表/实体。
  • 您不应使用本机数据库访问功能。

您应该创建一个面向服务的应用程序。我假设您通过在控制器中执行以下操作来添加新课程:

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

您应该创建一个服务,为您执行插入和更新计数,而不是这样做。像LessonService这样的东西有以下方法:

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

    // Increment the counter here

}