我刚开始在我的第一个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
}
这甚至可能吗?
在这种情况下是否有一些最佳做法?
不确定这是否足够清楚(正如我之前所说,我对此很新),任何帮助都会很高兴地欣赏:)
答案 0 :(得分: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) ;
}
}
}
或类似的