[英]Doctrine 2.2 Symfony 2.1 One to Many
一直嘗試這樣做一段時間,但我似乎無法讓它工作....
基本上,我們有一個頁面,有多個內容。 我試圖得到它,所以當生成實體時,我們將能夠做類似$page->getContents()
事情
當我運行doctrine:generate:entities命令時,它會跳過contents屬性並且不會為它創建一個getter或setter ....
這應該是嗎? 如果沒有,我需要做些什么來使這個工作?
這是文件:
頁
<?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;
你試過驗證你的實體嗎?
$em = $this->getDoctrine()->getEntityManager();
$validator = new SchemaValidator($em);
$errors = $validator->validateMapping();
希望這有助於安東尼諾
對不起,我來晚了 !
因此,如果您從數據庫生成實體,您將擁有您的php實體(通常在Entity \\文件夾中),還有xml / yml / php中的“映射文件”,默認情況下在Resources / config / doctrine中創建....
因此,如果你想制作一個“假”關系,你必須在你的orm文件和你的php實體中聲明它。
很高興它幫助了你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.