php连表查询一对多,php – Doctrine – 查询一对多,单向与来自反向的连接表关联...

我的目标是:

创建通用关联,其中第一个实体(例如,类别)可以多次用于其他对象(例如,帖子,文章)

帖子有类别,文章有类别,但文章和帖子是完全不同的实体. (两者不能同时连接)

映射示例:

岗位

/** @Entity */

class Post

{

// ...

/**

* @ManyToMany(targetEntity="Category")

* @JoinTable(name="post_categories",

* joinColumns={@JoinColumn(name="post_id", referencedColumnName="id")},

* inverseJoinColumns={@JoinColumn(name="category_id", referencedColumnName="id", unique=true)}

* )

*/

private $categories;

public function __construct()

{

$this->categories= new \Doctrine\Common\Collections\ArrayCollection();

}

// ...

}

文章

/** @Entity */

class Article

{

// ...

/**

* @ManyToMany(targetEntity="Category")

* @JoinTable(name="article_categories",

* joinColumns={@JoinColumn(name="article_id", referencedColumnName="id")},

* inverseJoinColumns={@JoinColumn(name="category_id", referencedColumnName="id", unique=true)}

* )

*/

private $categories;

public function __construct()

{

$this->categories= new \Doctrine\Common\Collections\ArrayCollection();

}

// ...

}

类别

/** @Entity */

class Category

{

// ...

/**

* @ORM\Column(type="string", length=100)

*/

protected $name;

}

正如您所看到的,这是One-To-Many,单向连接表关联.

现在,我可以查询单个帖子类别和文章类别,但类别不了解帖子或文章.这很好,因为我可以重复使用Category.

哪里有问题?

我需要加载包含单个类别或类别的所有帖子或文章.

我们有20个帖子,其中的类别名为“symfony”(id:2),10个帖子的类别名为“doctrine”(id:3).现在我需要查询加载所有类别“doctrine”的帖子

findPostsByCategoryId( $id );

// findPostsByCategoryId( 3 );

或所有两个类别的帖子

findPostsByCategories( Array $array );

// findPostsByCategories( array(2,3) );

我怎样才能做到这一点?

我需要针对此案例或解决方案的解决方案来实现我的目标.

每个提示都很受欢迎.

附:我在这里描述的映射还有其他相关问题