我對Doctrine很新,所以我希望有人能幫助我或將我重定向到良好的文檔頁面。主義arrayCollections和關係
我建立一個應用程序有兩個實體(我減少的解釋):
- 招標
- 文件
每份標書,我們可以有一個或多個文件。所以我做了以下的對象。
招標人:
<?php
namespace TenderBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="tender")
*/
class Tender
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $tender_id;
/**
* @ORM\Column(type="array")
* @ORM\ManyToOne(targetEntity="File", inversedBy="tenders")
* @ORM\JoinColumn(name="tender_files", referencedColumnName="file_id")
*/
private $tender_files;
}
文件:
<?php
namespace TenderBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
* @ORM\Entity
* @ORM\Table(name="file")
*/
class File
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $file_id;
/**
* @ORM\OneToMany(targetEntity="Tender", mappedBy="tender_files", cascade={"persist", "remove"})
*/
private $file_tender;
}
第一個問題:是不是這樣做的正確方法? (當然,我已經創建了獲取和設置屬性的方法,但它們是基本的)。
當我堅持我的每個File對象時,我試圖添加到我的Tender實例。但要做到這一點,我需要讓$tender_files
公衆和做到這一點:
$tender->tender_files[]
這不是一個可行的解決方案適合我,因爲我需要我的所有領域都是私人,我想恢復我的對象時,我打電話這:
$this->getDoctrine()->getManager()->getRepository('TenderBundle:Tender')->find($id)->getTenderFiles()->getFileName();
所以,我解釋並要求找到正確的方式來做我想做的。我希望我所需要的是清楚的,如果需要,我在這裏回答問題或顯示更多代碼。
謝謝!
你的關係是錯誤的招標許多tender_files所以它的你的溫柔類中的一對多和對面也爲文件實體,那麼你應該有addTenderFile和removeTenderFile在你的溫柔類,可以生成這些 –