使用 PHP Doctrine ORM 加入 0..n / 0..n 关系链接的 2 个表

Join 2 tables linked by a 0..n / 0..n relation with PHP Doctrine ORM

我有 2 个 table:UserSeries
还有一个table:User_Series代表用户关注什么系列。由于此 table 仅表示关系 0..n --- 0..n,因此未生成 class。

User table:         Series table:       User_Series table:

| id      | ... |   | id      | ... |   | user_id | series_id |
|---------|-----|   |---------|-----|   |---------|-----------|
| INT(11) | ... |   | INT(11) | ... |   | INT(11) | INT(11)   |

如何创建一个 QueryBuilder 来检索用户关注的所有系列?

我试过但没有用的(所有系列都被退回):

$this->getDoctrine()
    ->getRepository(Series::class)
    ->createQueryBuilder('s')
    ->join(User::class, 'u')
    ->where('u = :user_id')
    ->setParameter('user_id', $user->getId())
    ->getQuery()
    ->execute();

tables A 和 B 之间的 0..n/0..n 关系由数据库中的另一个 table 表示。 但是,Doctrine 通过 B class 内的 A 数组和 A class.

内的 B 数组对其进行建模

因此,在加入时,必须使用该数组来完成。

// finds all series that a specific user follows:
$this->getDoctrine()
    ->getRepository(Series::class)
    ->createQueryBuilder('s')
    ->join('s.user', 'u')            // using s.user instead of User::class
    ->where('u = :user_id')
    ->setParameter('user_id', $user->getId())
    ->getQuery()
    ->execute();