1
嗨,我面臨一個我無法找到它的解決方案,所以尋求幫助。Symfony2在數據庫中保存Doctrine Common Collections ArrayCollection而不是名稱
我有兩個實體:演員和藝術家。在投從我有演員,女演員,這將是由藝術家表中的字段,我用這個代碼:
爲:
namespace Bbd\MyAppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class CastType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('actor', 'entity', array(
'class' => 'BbdMyAppBundle:Artist',
'property' => 'name',
'multiple' => true,
'label' => 'Artist',
'required' => false,
))
->add('actress')
->add('content')
;
}
可以有多個演員或女演員。所以在數據庫它保存像:
Doctrine\Common\Collections\[email protected]
在演員領域。我不知道爲什麼,它應該保存身份證或姓名。
這裏是投ORM:
Bbd\MyAppBundle\Entity\Cast:
type: entity
repositoryClass: Bbd\MyAppBundle\Repository\CastRepository
table: cast
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
actor:
type: text
nullable: true
actress:
type: text
nullable: true
oneToOne:
content:
targetEntity: Content
inversedBy: cast
joinColumn:
name: content_id
referencedColumnName: id
onDelete: CASCADE
藝術家ORM
Bbd\MyAppBundle\Entity\Artist:
type: entity
repositoryClass: Bbd\MyAppBundle\Repository\ArtistRepository
table: artist
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
name:
type: string
length: 255
unique: true
bangla_name:
type: string
length: 255
unique: true
priority:
type: integer
birth:
type: date
sex:
type: string
length: 6
bio_english:
type: text
bio_bangla:
type: text
感謝您的幫助..
您正在使用文本類型存儲藝術家到演員實體中,這真的不是一個好主意,更好地將演員和藝術家之間建立關聯,如「OneToMany ','ManyToMany'這是最適合你的結構建設之前,我建議你閱讀官方文檔['數據庫和Doctrine'](http://symfony.com/doc/current/book/doctrine.html),它也有例子有很好的解釋 –
我總共有20個投射場,所以如果我設置了關係,那麼會有這麼多表嗎?謝謝你的建議.. –
不,你的演員和藝術家實體之間會存在一個關係,而這個關係表將會與演員和藝術家相關,只是看看['學說的多到多](http:// doctrine- orm.readthedocs.org/en/latest/reference/association-mapping.html#many-to-many-unidirectional) –