Ant*_*NEE 0 php symfony1 symfony doctrine-orm
我想在我的网站上制作一个导航栏.
我有一个SQL表菜单.菜单可以有儿童菜单等....
CREATE TABLE IF NOT EXISTS MENU
(
menu_Id INT AUTO_INCREMENT NOT NULL,
nom VARCHAR(100) NOT NULL,
route VARCHAR(255) NOT NULL,
parent INT NULL,
CONSTRAINT pk_MENU PRIMARY KEY (menu_Id),
CONSTRAINT fk_MENU_MENU FOREIGN KEY (parent) REFERENCES MENU(menu_Id)
);
Run Code Online (Sandbox Code Playgroud)
我在Entity文件夹中的symfony项目中有一个类.
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
/**
* @ORM\Entity
* @ORM\Table(name="menu")
*/
class Menu
{
/**
* @ORM\Column(name="menu_Id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(name="nom", type="string", length=100)
*/
protected $lib;
/**
* @ORM\Column(type="string", length=100)
*/
protected $route;
/**
* @ORM\OneToMany(targetEntity="Menu", mappedBy="parent")
*/
protected $listeSousMenus;
//... GETTERS AND SETTERS ...
}
Run Code Online (Sandbox Code Playgroud)
当我显示页面时,我有这个错误:
在第23行的bandeau.html.twig中呈现模板("通知:未定义的索引:父")期间抛出了异常.
我该如何解决错误?如何使用递归子项实现我的菜单?
错误是明确的:您的父字段在哪里?
您需要添加父属性:
/**
* @ORM\ManyToOne(targetEntity="Menu", inversedBy="listeSousMenus")
* @ORM\JoinColumn(name="parent", referencedColumnName="menu_Id")
*/
protected $parent;
Run Code Online (Sandbox Code Playgroud)
在文档中查看此示例:http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-self-referencing
<?php
/** @Entity */
class Category
{
// ...
/**
* @OneToMany(targetEntity="Category", mappedBy="parent")
*/
private $children;
/**
* @ManyToOne(targetEntity="Category", inversedBy="children")
* @JoinColumn(name="parent_id", referencedColumnName="id")
*/
private $parent;
// ...
public function __construct() {
$this->children = new \Doctrine\Common\Collections\ArrayCollection();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2335 次 |
| 最近记录: |