Noob在这里。我会说我可以看到曲线的高峰,但我还有很长的路要走。
我有一个引用类别表的实体(tblxchangecategories):
这与引用类别层次结构表的实体(tblxchangecategory_hier)有关:
这种关系是自我引用的。
父母有6个主要类别,其余类别(36个)都是孩子。
这就是我在实体文件中定义关系的方式(tblxchangecategories):
/**
* @OneToMany(targetEntity="TblXchangecategories", mappedBy="children")
**/
private $parent;
/**
* @ManyToOne(targetEntity"TblXchangecategories", inversedBy="parent")
* @JoinTable(name="tbl_xchangecategory_hier",
* joinColumns={@joinColumn(name="hier_parent", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="hier_child", referencedColumnName="id")}
*/
private $children;
在另一个权利文件(tblxchangecategory_hier)中:
/**
* @var \WorkoutExchange\WXCoreBundle\Entity\TblXchangecategories
*
* @ORM\OneToMany(targetEntity="WorkoutExchange\WXCoreBundle\Entity\TblXchangecategories")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="hier_parent", referencedColumnName="id")
* })
*/
private $hierParent;
/**
* @var \WorkoutExchange\WXCoreBundle\Entity\TblXchangecategories
*
* @ORM\ManyToOne(targetEntity="WorkoutExchange\WXCoreBundle\Entity\TblXchangecategories")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="hier_child", referencedColumnName="id")
* })
*/
private $hierChild;
使用以下代码,我可以检索拼合数组中的所有类别(无关系):
$categories = $em->getRepository('WorkoutExchangeWXCoreBundle:TblXchangecategories')->findAll();
我可以设置视图,这样就没问题,它会从数据库中获取导致我麻烦的数据。
我在我的几个搜索中看到过对->getChildren()
功能的引用,但我的实体定义文件中没有这个功能。
我想要的是让所有实体都被填充,这样当我显示它们时,我可以使用父项作为标题,父母下面的子项是这样的:
感谢您的帮助。
答案 0 :(得分:0)
你的关系错了,试试这个:
/**
* @var TblXchangecategories
*
* @ORM\ManyToOne(targetEntity="TblXchangecategories")
* @ORM\JoinColumn(name="hier_parent", referencedColumnName="id")
*
*/
private $hierParent;
/**
* @var TblXchangecategories
*
* @ORM\OneToMany(targetEntity="TblXchangecategories", mappedBy="hierParent")
*/
private $hierChildren;
答案 1 :(得分:0)
我认为如果它是可行的。您可以使用现有的树行为,它们有很多有用的方法来管理您的层次结构。来自knplabs的DoctrineExtensions或DoctrineBehaviors。