Doctrine orm 为什么在父表中插入repositoryClass块?

Doctrine orm 为什么在父表中插入repositoryClass块?,doctrine-orm,symfony,Doctrine Orm,Symfony,我有两个实体,如果我在@ORM\Entity declare-doctor中设置了一个实体repositoryClass,则不要在父表中插入新行 我的实体名称是类别和产品。如果我将repositoryClass设置为Category,则不会在产品中插入行。这是非常奇怪的行为,我第一次面对它 请帮忙,如果你能 实体代码: namespace AJStudio\NestedSetBundle\Model; use Doctrine\ORM\Mapping as ORM; abstract cla

我有两个实体,如果我在@ORM\Entity declare-doctor中设置了一个实体
repositoryClass
,则不要在父表中插入新行

我的实体名称是类别和产品。如果我将
repositoryClass
设置为Category,则不会在产品中插入行。这是非常奇怪的行为,我第一次面对它

请帮忙,如果你能

实体代码:

namespace AJStudio\NestedSetBundle\Model;

use Doctrine\ORM\Mapping as ORM;

abstract class Node
{
/**
 * @ORM\Id()
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @var Node
 *
 * @ORM\ManyToOne(targetEntity="Node", inversedBy="children")
 * @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
 */
protected $parent;

/**
 * @var int
 *
 * @ORM\Column(name="lvl", type="smallint", nullable=true)
 */
protected $level;

/**
 * @var int
 *
 * @ORM\Column(name="left_key", type="smallint", nullable=true)
 */
protected $left;

/**
 * @var int
 *
 * @ORM\Column(name="right_key", type="smallint", nullable=true)
 */
protected $right;

/**
 * @var int
 *
 * @ORM\Column(name="position", type="smallint", nullable=true)
 */
protected $position;

/**
 * @var int
 *
 * @ORM\Column(name="name", type="string", nullable=false)
 */
protected $name;

/**
 * @return mixed
 */
public function getId()
{
    return $this->id;
}

/**
 * @param mixed $id
 */
public function setId($id)
{
    $this->id = $id;
}

/**
 * @return Node
 */
public function getParent()
{
    return $this->parent;
}

/**
 * @param Node $parent
 */
public function setParent($parent)
{
    $this->parent = $parent;
}

/**
 * @return int
 */
public function getLeft()
{
    return $this->left;
}

/**
 * @param int $left
 */
public function setLeft($left)
{
    $this->left = $left;
}

/**
 * @return int
 */
public function getRight()
{
    return $this->right;
}

/**
 * @param int $right
 */
public function setRight($right)
{
    $this->right = $right;
}

/**
 * @return int
 */
public function getPosition()
{
    return $this->position;
}

/**
 * @param int $position
 */
public function setPosition($position)
{
    $this->position = $position;
}

/**
 * @return int
 */
public function getName()
{
    return $this->name;
}

/**
 * @param int $name
 */
public function setName($name)
{
    $this->name = $name;
}

/**
 * @return int
 */
public function getLevel()
{
    return $this->level;
}

/**
 * @param int $level
 */
public function setLevel($level)
{
    $this->level = $level;
}
}


namespace Sunduk\AdminBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use AJStudio\NestedSetBundle\Model\Node;

/**
 * @ORM\Table(name="category")
 *     @ORM\Entity(repositoryClass="Sunduk\AdminBundle\Repository\CategoryRepository")
 */
class Category extends Node
{
/**
 * @var Category
 *
 * @ORM\ManyToOne(targetEntity="Category", inversedBy="children")
 * @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
 */
protected $parent;

/**
 * @var Category[]
 *
 * @ORM\OneToMany(targetEntity="Category", mappedBy="parent")
 */
protected $children;

/**
 * @var int
 *
 * @ORM\Column(name="menu_name", type="string", nullable=true)
 */
protected $menuName;

/**
 * @var int
 *
 * @ORM\Column(name="full_name", type="string", nullable=true)
 */
protected $fullName;

/**
 * @var int
 *
 * @ORM\Column(name="description", type="text", nullable=true)
 */
protected $description;

/**
 * @var int
 *
 * @ORM\Column(name="alias", type="string", nullable=true)
 */
protected $alias;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="published_at", type="datetime", nullable=true)
 */
protected $publishedAt;

/**
 * @var \DateTime
 *
 * @ORM\Column(name="unpublished_at", type="datetime", nullable=true)
 */
protected $unpublishedAt;

/**
 * @return Category
 */
public function getParent()
{
    return $this->parent;
}

/**
 * @param Category $parent
 */
public function setParent($parent)
{
    $this->parent = $parent;
}

/**
 * @return Category[]
 */
public function getChildren()
{
    return $this->children;
}

/**
 * @param Category[] $children
 */
public function setChildren($children)
{
    $this->children = $children;
}

/**
 * @return int
 */
public function getMenuName()
{
    return $this->menuName;
}

/**
 * @param int $menuName
 */
public function setMenuName($menuName)
{
    $this->menuName = $menuName;
}

/**
 * @return int
 */
public function getFullName()
{
    return $this->fullName;
}

/**
 * @param int $fullName
 */
public function setFullName($fullName)
{
    $this->fullName = $fullName;
}

/**
 * @return int
 */
public function getDescription()
{
    return $this->description;
}

/**
 * @param int $description
 */
public function setDescription($description)
{
    $this->description = $description;
}

/**
 * @return int
 */
public function getAlias()
{
    return $this->alias;
}

/**
 * @param int $alias
 */
public function setAlias($alias)
{
    $this->alias = $alias;
}

/**
 * @return \DateTime
 */
public function getPublishedAt()
{
    return $this->publishedAt;
}

/**
 * @param \DateTime $publishedAt
 */
public function setPublishedAt($publishedAt)
{
    $this->publishedAt = $publishedAt;
}

/**
 * @return \DateTime
 */
public function getUnpublishedAt()
{
    return $this->unpublishedAt;
}

/**
 * @param \DateTime $unpublishedAt
 */
public function setUnpublishedAt($unpublishedAt)
{
    $this->unpublishedAt = $unpublishedAt;
}
}


namespace Sunduk\AdminBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 *     @ORM\Entity(repositoryClass="Sunduk\AdminBundle\Repository\ProductRepository")
 * @ORM\Table(name="product")
 */
class Product
{
/**
 * @ORM\Id()
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\ManyToOne(targetEntity="Category")
 * @ORM\JoinColumn(name="category_id", referencedColumnName="id")
 */
protected $category;

/**
 * @var Currency
 *
 * @ORM\ManyToOne(targetEntity="Currency")
 * @ORM\JoinColumn(name="currency_id", referencedColumnName="id")
 */
protected $currency;

/**
 * @var Brand
 *
 * @ORM\ManyToOne(targetEntity="Brand")
 * @ORM\JoinColumn(name="brand_id", referencedColumnName="id")
 */
protected $brand;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", nullable=false)
 */
protected $name;

/**
 * @var string
 *
 * @ORM\Column(name="article_number", type="string", nullable=true)
 */
protected $articleNumber;

/**
 * @var int
 *
 * @ORM\Column(name="base_price", type="integer", nullable=true)
 */
protected $basePrice;

/**
 * @var string
 *
 * @ORM\Column(name="description", type="text", nullable=true)
 */
protected $description;

/**
 * @var int
 *
 * @ORM\Column(name="count_per_unit", type="integer", nullable=false)
 */
protected $countPerUnit = 1;

/**
 * @var int
 *
 * @ORM\Column(name="weight", type="float", nullable=true)
 */
protected $weight;

/**
 * @var string
 *
 * @ORM\Column(name="alias", type="string", nullable=true)
 */
protected $alias;

/**
 * @var bool
 *
 * @ORM\Column(name="new", type="boolean", nullable=false)
 */
protected $new = false;

/**
 * @var bool
 *
 * @ORM\Column(name="popular", type="boolean", nullable=false)
 */
protected $popular = false;

/**
 * @return mixed
 */
public function getId()
{
    return $this->id;
}

/**
 * @param mixed $id
 */
public function setId($id)
{
    $this->id = $id;
}

/**
 * @return string
 */
public function getName()
{
    return $this->name;
}

/**
 * @param string $name
 */
public function setName($name)
{
    $this->name = $name;
}

/**
 * @return string
 */
public function getArticleNumber()
{
    return $this->articleNumber;
}

/**
 * @param string $articleNumber
 */
public function setArticleNumber($articleNumber)
{
    $this->articleNumber = $articleNumber;
}

/**
 * @return int
 */
public function getBasePrice()
{
    return $this->basePrice;
}

/**
 * @param int $basePrice
 */
public function setBasePrice($basePrice)
{
    $this->basePrice = $basePrice;
}

/**
 * @return string
 */
public function getDescription()
{
    return $this->description;
}

/**
 * @param string $description
 */
public function setDescription($description)
{
    $this->description = $description;
}

/**
 * @return int
 */
public function getCountPerUnit()
{
    return $this->countPerUnit;
}

/**
 * @param int $countPerUnit
 */
public function setCountPerUnit($countPerUnit)
{
    $this->countPerUnit = $countPerUnit;
}

/**
 * @return int
 */
public function getWeight()
{
    return $this->weight;
}

/**
 * @param int $weight
 */
public function setWeight($weight)
{
    $this->weight = $weight;
}

/**
 * @return string
 */
public function getAlias()
{
    return $this->alias;
}

/**
 * @param string $alias
 */
public function setAlias($alias)
{
    $this->alias = $alias;
}

/**
 * @return boolean
 */
public function isNew()
{
    return $this->new;
}

/**
 * @param boolean $new
 */
public function setNew($new)
{
    $this->new = $new;
}

/**
 * @return boolean
 */
public function isPopular()
{
    return $this->popular;
}

/**
 * @param boolean $popular
 */
public function setPopular($popular)
{
    $this->popular = $popular;
}

/**
 * @return Currency
 */
public function getCurrency()
{
    return $this->currency;
}

/**
 * @param Currency $currency
 */
public function setCurrency($currency)
{
    $this->currency = $currency;
}

/**
 * @return mixed
 */
public function getBrand()
{
    return $this->brand;
}

/**
 * @param mixed $brand
 */
public function setBrand($brand)
{
    $this->brand = $brand;
}

/**
 * @return mixed
 */
public function getCategory()
{
    return $this->category;
}

/**
 * @param mixed $category
 */
public function setCategory($category)
{
    $this->category = $category;
}
}


namespace Sunduk\AdminBundle\Repository;

use Sunduk\AdminBundle\Entity\Category;

class CategoryRepository extends AbstractRepository
{
public function getTree() {
    return $this
        ->createQueryBuilder('category')
        ->orderBy('category.left', 'ASC')
        ->getQuery()
        ->getResult();
}

public function getTreeRoot() {
    return $this
        ->createQueryBuilder('category')
        ->orderBy('category.left', 'ASC')
        ->where('category.parent IS NULL')
        ->setMaxResults(1)
        ->getQuery()
        ->getResult();
}

public function getChildrenByCategory(Category $category) {
    return $this
        ->createQueryBuilder('category')
        ->where('category.left > :left_key AND category.right < :right_key ')
        ->setParameter('left_key', $category->getLeft())
        ->setParameter('right_key', $category->getRight())
        ->getQuery()
        ->getResult();
}
}
namespace AJStudio\NestedSetBundle\Model;
使用条令\ORM\Mapping作为ORM;
抽象类节点
{
/**
*@ORM\Id()
*@ORM\Column(type=“integer”)
*@ORM\GeneratedValue(strategy=“AUTO”)
*/
受保护的$id;
/**
*@var节点
*
*@ORM\manytone(targetEntity=“Node”,inversedBy=“children”)
*@ORM\JoinColumn(name=“parent\u id”,referencedColumnName=“id”)
*/
受保护的$父母;
/**
*@var int
*
*@ORM\Column(name=“lvl”,type=“smallint”,nullable=true)
*/
受保护的美元水平;
/**
*@var int
*
*@ORM\Column(name=“left\u key”,type=“smallint”,nullable=true)
*/
受保护的剩余美元;
/**
*@var int
*
*@ORM\Column(name=“right\u key”,type=“smallint”,nullable=true)
*/
受保护的权利;
/**
*@var int
*
*@ORM\Column(name=“position”,type=“smallint”,nullable=true)
*/
受保护的美元头寸;
/**
*@var int
*
*@ORM\Column(name=“name”,type=“string”,nullable=false)
*/
受保护的$名称;
/**
*@返回混合
*/
公共函数getId()
{
返回$this->id;
}
/**
*@param混合$id
*/
公共函数setId($id)
{
$this->id=$id;
}
/**
*@return节点
*/
公共函数getParent()
{
返回$this->parent;
}
/**
*@param节点$parent
*/
公共函数setParent($parent)
{
$this->parent=$parent;
}
/**
*@return int
*/
公共函数getLeft()
{
返回$this->left;
}
/**
*@param int$左
*/
公共函数setLeft($left)
{
$this->left=$left;
}
/**
*@return int
*/
公共函数getRight()
{
返回$this->right;
}
/**
*@param int$right
*/
公共功能设置权限($right)
{
$this->right=$right;
}
/**
*@return int
*/
公共函数getPosition()
{
返回$this->position;
}
/**
*@param int$位置
*/
公共功能设置位置($position)
{
$this->position=$position;
}
/**
*@return int
*/
公共函数getName()
{
返回$this->name;
}
/**
*@param int$name
*/
公共函数setName($name)
{
$this->name=$name;
}
/**
*@return int
*/
公共函数getLevel()
{
返回$this->level;
}
/**
*@param int$level
*/
公共功能设置级别($level)
{
$this->level=$level;
}
}
命名空间Sunduk\AdminBundle\Entity;
使用条令\ORM\Mapping作为ORM;
使用AJStudio\NestedSetBundle\Model\Node;
/**
*@ORM\Table(name=“category”)
*@ORM\Entity(repositoryClass=“Sunduk\AdminBundle\Repository\CategoryRepository”)
*/
类类别扩展节点
{
/**
*@var类别
*
*@ORM\manytone(targetEntity=“Category”,inversedBy=“children”)
*@ORM\JoinColumn(name=“parent\u id”,referencedColumnName=“id”)
*/
受保护的$父母;
/**
*@var类别[]
*
*@ORM\OneToMany(targetEntity=“Category”,mappedBy=“parent”)
*/
受保护的儿童;
/**
*@var int
*
*@ORM\Column(name=“menu\u name”,type=“string”,nullable=true)
*/
受保护的$Menuame;
/**
*@var int
*
*@ORM\Column(name=“full\u name”,type=“string”,nullable=true)
*/
受保护的$fullName;
/**
*@var int
*
*@ORM\Column(name=“description”,type=“text”,nullable=true)
*/
受保护的说明;
/**
*@var int
*
*@ORM\Column(name=“alias”,type=“string”,nullable=true)
*/
受保护的$alias;
/**
*@var\DateTime
*
*@ORM\Column(name=“published\u at”,type=“datetime”,nullable=true)
*/
受保护的$DAT;
/**
*@var\DateTime
*
*@ORM\Column(name=“unpublished_at”,type=“datetime”,nullable=true)
*/
受保护的$unpublishedAt;
/**
*@返回类别
*/
公共函数getParent()
{
返回$this->parent;
}
/**
*@param类别$parent
*/
公共函数setParent($parent)
{
$this->parent=$parent;
}
/**
*@返回类别[]
*/
公共函数getChildren()
{
返回$this->children;
}
/**
*@param Category[]$children
*/
公共职能儿童(儿童)
{
$this->children=$children;
}
/**
*@return int
*/
公共函数getMenuName()
{
返回$this->menuName;
}
/**
*@param int$menuName
*/
公共函数setMenuName($menuName)
{
$this->menuName=$menuName;
}
/**
*@return int
*/
公共函数getFullName()
{
返回$this->fullName;
}
/**
*@param int$fullName
*/
公共函数setFullName($fullName)
{
$this->fullName=$fullName;
}
/**
*@return int
*/
公共函数getDescription()
{
返回$this->description;
}
/**
*@param int$description
*/
公共函数setDescription($description)
{
$this->description=$description;
}
/**
*@return int
*/
公共函数getAlias()
{
返回$this->alias;
}
/**
*@param int$别名
*/
公共函数setAlias($alias)
{
$this->alias=$alias;
}
/**
*@return\DateTime
*/
公共函数getPublishedAt()
{
返回$this->publishedAt;
}
/**
*@param\DateTime$publishedAt
*/
公共函数setPublishedAt($publishedAt)
{
$this->publishedAt=$publishedAt;
}
/**
*@return\DateTime
*/
公共函数getUnpublishedAt()
{
返回$this->unpublishedAt;
}
/**
*@param\DateTime$unpublishedAt
*/
公共函数setUnpublishedAt($unpublishedAt)
{
$this->unpublishedAt=$unpublishedAt;
}
}
命名空间Sunduk\AdminBundle\Entity;
使用条令\ORM\Mapping作为ORM;
/**
*@ORM\Entity(repositoryClass=“Sunduk\AdminBundle\Repository\ProductRepository”)
*@ORM\Table(name=“product”)
*/
类产品
{
/**
*@ORM\Id()
*@ORM\Column(type=“integer”)
*@ORM\GeneratedValue(strategy=“AUTO”)
*/
受保护的$id;
/**
*@ORM\manytone(targetEntity=“Category”)
*@ORM\JoinColumn(name=“category\u id”,referencedColumnName=“id”)
*/
受保护类别;
/**
*@var货币
*
*@ORM\manytone(targetEntity=“Currency”)
*@ORM\JoinColumn(name=“currency\u id”,参考
/**
* @ORM\MappedSuperclass
*
*/
abstract class Node
{
//...
}