代码之家  ›  专栏  ›  技术社区  ›  Dialkord

学说中的关系

  •  -1
  • Dialkord  · 技术社区  · 7 年前

    我有2个实体: 类别和产品。 如何在这些实体之间建立关系? 类别实体:

        class Category
        {
            private $id;
            private $name;
            private $parent;
            public function getChildren()
            {
                return $this->children;
            }
        //setters and getters
        }
    

    项目实体:

     class Items
        {
    
            private $id;
            private $name;
            private $price;
            private $color;
            private $size;
            private $weight;
        //getters and setters
        }
    

    yml类:

    AppBundle\Entity\Category:
      type: entity
      oneToMany:
            children:
                targetEntity: AppBundle\Entity\Category
                mappedBy: parent
                orderBy:
                    name: ASC
      manyToOne:
            parent:
                targetEntity: AppBundle\Entity\Category
                inversedBy: children
                joinColumn:
                    name: parentId
                    referencedColumn: id
      table: category
      repositoryClass: AppBundle\Repository\CategoryRepository
      id:
          id:
              column: id
              type: integer
              id: true
              generator:
              generator:
                  strategy: AUTO
      fields:
          name:
              type: string
              lenght: 255
    

    项目yml:

    AppBundle\Entity\Items:
        type: entity
        table: items
        repositoryClass: AppBundle\Repository\ItemsRepository
        id:
            id:
                type: integer
                id: true
                generator:
                    strategy: AUTO
        fields:
            name:
                type: string
                length: 255
            price:
                type: integer
            color:
                type: string
                length: 255
                nullable: true
            size:
                type: integer
            weight:
                type: integer
    

    一种产品可以属于多个类别,如何做到这一点?我认为这是众多的关系,但我不能正确地建立关系。 .....................................................................................................................................................................

    1 回复  |  直到 7 年前
        1
  •  1
  •   l13    7 年前

    添加您的类别yml:

    oneToMany:
        items:
            targetEntity: Namespace\TO\YOUR\Entity\Item
            mappedBy: category
    

    添加您的项目yml:

       manyToOne:
        catregory:
            targetEntity: Namespace\TO\YOUR\Entity\Category
            inversedBy: items
            joinColumn:
                name: category_id
                referencedColumn: id
    

    添加项目实体:

        /**
     * @var Catregory
     */
    protected $catregory;
    
    
    public function setCategory(Catregory $catregory) {
        $this->catregory = $catregory;
    }
    
    public function getCatregory() {
        return $this->catregory;
    }       
    

    添加类别实体:

    use Doctrine\Common\Collections\ArrayCollection;
    use Doctrine\Common\Collections\Collection; 
    
    .................
    
    /**
     * @var Collection of Item
     */
    protected $items;
    
     public function __construct() {
        $this->items = new ArrayCollection();
    }   
    
    public function getItems() {
        return $this->items;
    }
    
    public function setItems(Collection $items) {
        $this->items = $items;
    }
    
    public function addItem(Item $item) {
        if (!$this->Items->contains($item)) {
            $item->setCategory($this);
            $this->items->add($item);
        }
    }
    
    public function removeItem(Item $item) {
        if ($this->items->contains($item)) {
            $this->items->remove($item);
        }
    }
    
    public function clearItems() {
        $this->items->clear();
    }