一直試圖爲一段時間,現在做到這一點,但我似乎無法得到它的工作....學說2.2 Symfony的2.1一對多
基本上,我們有一個頁面,具有多重內容。我試圖得到它,所以當實體生成時,我們將能夠做一些像$page->getContents()
當我運行教條:生成:實體命令壽, ...
它應該嗎?如果沒有,我需要做些什麼來實現這個目標?
以下是文件:
頁
<?php
namespace Foo\BarBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Foo\BarBundle\Entity\Page
*
* @ORM\Table(name="page")
* @ORM\Entity
*/
class Page
{
/**
* @var integer $pageId
*
* @ORM\Column(name="page_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
public $pageId;
.......
/**
* @var \Foo\BarBundle\Entity\Content
*
* @ORM\OneToMany(targetEntity="Content", mappedBy="page", cascade={"all"})
*/
public $contents;
}
內容
<?php
namespace Foo\BarBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Foo\BarBundle\Entity\Content
*
* @ORM\Table(name="content")
* @ORM\Entity
*/
class Content
{
/**
* @var integer $contentId
*
* @ORM\Column(name="content_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
public $contentId;
.........
/**
* @var Page
*
* @ORM\ManyToOne(targetEntity="Page", inversedBy="contents")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="page_id", referencedColumnName="page_id")
* })
*/
public $page;
}
模式
(取出不重要的列)
CREATE TABLE `page` (
`page_id` int(32) unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`page_id`),
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=latin1;
CREATE TABLE `content` (
`content_id` int(32) unsigned NOT NULL AUTO_INCREMENT,
`page_id` int(32) unsigned NOT NULL,
PRIMARY KEY (`content_id`),
KEY `page_id` (`page_id`),
CONSTRAINT `content_ibfk_1` FOREIGN KEY (`page_id`) REFERENCES `page` (`page_id`),
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=latin1;
你的模式的來源是什麼? –
編輯的模式文件/模式源 –
中的關係聲明看起來有點不妥。值得注意的是我們做的教條:映射:導入之前,然後編輯註釋等,然後運行doctrine:generate:entities – Ascherer