我有一個名爲元素的PHP模型類,它有一個多對多的自引用。我創建了一個多對多的關係那樣:Doctrine2:瀏覽器凍結使用多對多自引用
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Elements
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Evalfor\GescompevalBundle\Entity\ElementsRepository")
*/
class Elements
{
// Constants
const COMPETENCE = "competence";
const RESULT = "result";
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
// ... More attributes ...
/**
* @ORM\ManyToMany(targetEntity="Elements", mappedBy="myElements")
**/
private $elementsWithMe;
/**
* @ORM\ManyToMany(targetEntity="Elements", inversedBy="elementsWithMe")
* @ORM\JoinTable(name="connected_elements"),
* joinColumns={@ORM\JoinColumn(name="element_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="connected_element_id", referencedColumnName="id")}
* )
**/
private $myElements;
/**
* Construct
*
*/
public function __construct() {
$this->elementsWithMe = new \Doctrine\Common\Collections\ArrayCollection();
$this->myElements = new \Doctrine\Common\Collections\ArrayCollection();
}
public function addElement(Elements $element)
{
$element->addElement($this);
$this->myElements[] = $element;
return $this;
}
public function getElements(){
return $this->myElements;
}
// ... More methods ...
}
再說,我有元素的空庫:
use Doctrine\ORM\EntityRepository;
class ElementsRepository extends EntityRepository
{
}
最後,我有一個元件控制器:
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Evalfor\GescompevalBundle\Entity\Elements;
use Evalfor\GescompevalBundle\Form\ElementsType;
use Symfony\Component\HttpFoundation\Request;
class ElementsController extends Controller
{
// ... Some methods ...
public function updateAction($type)
{
$em = $this->getDoctrine()->getManager();
$elements_all = $this->getDoctrine()->getRepository('EvalforGescompevalBundle:Elements')->findAll();
print_r($elements_all); exit;
// ...
}
}
的問題在於,當我調用findAll()方法時,瀏覽器會凍結(對於類似的其他方法也是如此),但是如果我刪除Elements類中的所有ManyToMany引用,它將完美運行。
任何人都可以幫助我嗎?提前致謝。
也許在myElements中有一個元素。也許這會導致一個infine循環?有沒有錯誤信息? – tiriana
DB或應用程序中沒有任何關係,只有幾個元素。沒有錯誤信息,只會凍結。 – Juanan