0

我有两张桌子,例如

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 表示每个用户在课程表中出现的次数。我想正确保留这个号码。

方法一)

每次将行添加到课程时,您可以通过 PHP 增加 User.count,但是当您向课程中添加行或从课程中删除行时,您都必须编写线

方法 B)

使用 PrePersist 或 PreUpdate(我正在使用学说 2)但是当触发课程实体的 PreUpdate 时是否可以访问用户表?

方法 C)

你可以连接一些mysql原生方法吗?

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

4

1 回答 1

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

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

$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 回答