学说一对一关系映射

doctrine one-to-one relation mapping

我有两个实体,我想映射它们,这样当我为每个实体生成 crud 时,当我想使用 Map 实体进行新插入以便能够 select 基于来自 Board 的 id实体。 我一直在尝试进行映射。.我不确定我是否做对了,因为在 mysql 中,我在 sql 生成后看不到外键。

Board.php

    <?php

    namespace AppBundle\Entity;

    use Doctrine\ORM\Mapping as ORM;

    /**
     * Board
     *
     * @ORM\Table()
     * @ORM\Entity(repositoryClass="AppBundle\Entity\BoardRepository")
     */
    class Board
    {
        /**
         * @var integer
         *
         * @ORM\Column(name="id", type="integer")
         * @ORM\Id
         * @ORM\GeneratedValue(strategy="AUTO")
         * @ORM\ManyToOne(targetEntity="Board")
         * @ORM\JoinColumns({
         *   @ORM\JoinColumn(name="id", referencedColumnName="BoardId")
         * })

         */
        private $id;

        /**
         * @var string
         *
         * @ORM\Column(name="PropertyName", type="string", length=255)
         */
        private $propertyName;

        /**
         * @var string
         *
         * @ORM\Column(name="PropertyDescription", type="string", length=255)
         */
        private $propertyDescription;

        /**
         * @var string
         *
         * @ORM\Column(name="PropertyPicture", type="string", length=255)
         */
        private $propertyPicture;

        /**
         * @var string
         *
         * @ORM\Column(name="PropertyGlyphonic", type="string", length=255)
         */
        private $propertyGlyphonic;

        /**
         * @var string
         *
         * @ORM\Column(name="PropertyPrice", type="string", length=255)
         */
        private $propertyPrice;


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

        /**
         * Set propertyName
         *
         * @param string $propertyName
         * @return Board
         */
        public function setPropertyName($propertyName)
        {
            $this->propertyName = $propertyName;

            return $this;
        }

        /**
         * Get propertyName
         *
         * @return string 
         */
        public function getPropertyName()
        {
            return $this->propertyName;
        }

        /**
         * Set propertyDescription
         *
         * @param string $propertyDescription
         * @return Board
         */
        public function setPropertyDescription($propertyDescription)
        {
            $this->propertyDescription = $propertyDescription;

            return $this;
        }

        /**
         * Get propertyDescription
         *
         * @return string 
         */
        public function getPropertyDescription()
        {
            return $this->propertyDescription;
        }

        /**
         * Set propertyPicture
         *
         * @param string $propertyPicture
         * @return Board
         */
        public function setPropertyPicture($propertyPicture)
        {
            $this->propertyPicture = $propertyPicture;

            return $this;
        }

        /**
         * Get propertyPicture
         *
         * @return string 
         */
        public function getPropertyPicture()
        {
            return $this->propertyPicture;
        }

        /**
         * Set propertyGlyphonic
         *
         * @param string $propertyGlyphonic
         * @return Board
         */
        public function setPropertyGlyphonic($propertyGlyphonic)
        {
            $this->propertyGlyphonic = $propertyGlyphonic;

            return $this;
        }

        /**
         * Get propertyGlyphonic
         *
         * @return string 
         */
        public function getPropertyGlyphonic()
        {
            return $this->propertyGlyphonic;
        }

        /**
         * Set propertyPrice
         *
         * @param string $propertyPrice
         * @return Board
         */
        public function setPropertyPrice($propertyPrice)
        {
            $this->propertyPrice = $propertyPrice;

            return $this;
        }

        /**
         * Get propertyPrice
         *
         * @return string 
         */
        public function getPropertyPrice()
        {
            return $this->propertyPrice;
        }
    }

Map.php

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Map
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="AppBundle\Entity\MapRepository")
 */
class Map
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var integer
     * @ORM\Column(name="BoardId", type="integer")
     */
    private $boardId;

    /**
     * @var string
     *
     * @ORM\Column(name="X", type="string", length=255)
     */
    private $x;

    /**
     * @var string
     *
     * @ORM\Column(name="Y", type="string", length=255)
     */
    private $y;


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

    /**
     * Set boardId
     *
     * @param integer $boardId
     * @return Map
     */
    public function setBoardId($boardId)
    {
        $this->boardId = $boardId;

        return $this;
    }

    /**
     * Get boardId
     *
     * @return integer 
     */
    public function getBoardId()
    {
        return $this->boardId;
    }

    /**
     * Set x
     *
     * @param string $x
     * @return Map
     */
    public function setX($x)
    {
        $this->x = $x;

        return $this;
    }

    /**
     * Get x
     *
     * @return string 
     */
    public function getX()
    {
        return $this->x;
    }

    /**
     * Set y
     *
     * @param string $y
     * @return Map
     */
    public function setY($y)
    {
        $this->y = $y;

        return $this;
    }

    /**
     * Get y
     *
     * @return string 
     */
    public function getY()
    {
        return $this->y;
    }
}

看来你还没有读过手册。这是关于 Symfony.com 和 Doctrine-orm.readthedocs.org 的很好的文档。

阅读这篇文章 (http://symfony.com/doc/current/book/doctrine.html) and use this one as reference (http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html),您会找到这个问题和许多未来问题的答案。

您基本上需要做的是:

 class Board {
   /**         
    * @ORM\ManyToOne(targetEntity="Map")
    */
   private $map;
 }