0

我刚开始在我的第一个 Symfony2 项目中使用 Doctrine(到目前为止还没有使用 ORM 的经验)。

我有一个非常简单的结构,但对类的生成方式并不满意。
我在stackoverflow上寻找教程/相关问题,但到目前为止我还没有找到一个全面的答案:

假设我有 2 个实体 + 一个带有附加属性的关联表:

User
- id: int
- name: string
- movies: UserMovie

Movie
- id: int
- name: string
- duration: int

UserMovie:
- user_id: int
- movie_id: int
- seen: bool

一个用户可以拥有几部电影/一部电影可以由多个用户拥有。

我想要的是让生成的 UserMovie 类继承自 Movie,这样我就可以直接从 UserMovie 实例访问电影属性。

作为生成过程的结果,我想得到这样的东西:

class UserMovie extends Movie
{
  protected $user;      // User instance
  protected $id;        // inherited from Movie
  protected $name;      // inherited from Movie
  protected $duration;  // inherited from Movie
}

这甚至可能吗?
在这种情况下是否有一些最佳实践?

不确定这是否足够清楚(正如我之前所说,我对此很陌生),任何帮助将不胜感激:)

4

1 回答 1

0

还不够清楚:)

你应该建立

User hasMany UserMovies

Movie hasMany UserMovies

关系。这将允许你做这样的事情

var_dump( $user->hasMovie($movie) ) ;

通过做

class User
{
    public function hasMovie(Movie $movie)
    {
        foreach($this->usermovies as $m2m) {
            if ( $m2m->getMovie() === $movie ) 
                return true ;
        }
        return false ;
    }

    public function addMovie(Movie $movie)
    {
        if ( !$this->hasMovie($movie) ) {
            $m2m = new UserMovie() ;
            $m2m->setMovie($movie) ;
            $m2m->setUser($this) ;
            $this->usermovies->add($m2m) ;
        }
    }
}

或类似的

于 2013-07-05T16:41:13.727 回答