学说一对一关系映射

时间:2015-01-05 13:53:49

标签: php mysql entity-framework symfony doctrine-orm

我有两个实体,我想映射它们,以便当我想为每个实体生成crud时,我想使用Map实体创建一个新的插入,以便能够根据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;
    }
}

1 个答案:

答案 0 :(得分:0)

它看起来像你还没读过手册。这是Symfony.com和Doctrine-orm.readthedocs.org上的精彩文档。

阅读这篇文章(http://symfony.com/doc/current/book/doctrine.html)并使用此文章作为参考(http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html),您将找到答案以及未来的许多问题。

你基本上需要做的是:

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