好的,如果有人可以帮助我,这将是很好的,因为它似乎是难以处理的。
我在新的zf-boilerplate项目中设置了2个实体,如下所示。我试图按照Zendcasts.com上的教程 - One-to-Many with Doctrine 2,但无法获得学说来识别我已映射的关联。如果我运行orm:schema-tool:create --dump-sql
,它会转储生成的Sql,但不会转储最后应该创建外键映射的ALTER TABLE语句,我无法正常工作。
我已经尝试了我能想到的一切,我需要运行的JOIN语句显然也不起作用,但我想如果我能让Doctrine识别出我可以从那里进行的ALTER语句。
任何想法都会很棒,如果您需要更多信息,请告诉我。我一开始可能认为.ini文件可能设置错误,但我认为这更多地与关系注释有关?
<?php
namespace Photo\Entity;
/**
* @Entity(repositoryClass="Photo\Entity\Repository\MyGallery")
* @Table(name="gallery")
*/
class Gallery {
/**
* @Id @GeneratedValue
* @Column(type="smallint",nullable=false)
* @var integer
* @OneToMany(targetEntity="Photo", mappedBy="galleryID")
*/
protected $id;
/**
* @Column(type="string", length=200)
* @var string
*/
protected $gallery;
<?php
namespace Photo\Entity;
/**
* @Entity(repositoryClass="Photo\Entity\Repository\MyPhoto")
* @Table(name="photo")
*/
class Photo {
/**
* @Id @GeneratedValue
* @Column(type="smallint",nullable=false)
* @var integer
*/
protected $id;
/**
* @Column(type="smallint",nullable=false)
* @var integer
* @ManyToOne(targetEntity="Gallery")
* @JoinColumns({
* @JoinColumn(name="gallery_id", referencedColumnName="id")
* })
*/
protected $galleryID;
答案 0 :(得分:1)
嗯......我明白了......检查你的专栏名称,gallery_id
vs galleryID
看起来很可疑。
如果是gallery_id
,则必须将$galleryID
注释更改为@Column(type="smallint", nullable=false, name="gallery_id")
通常,对象模型中的任何位置都应使用对象字段名称,例如mappedBy="galleryID"
,但列本身应使用相应的数据库名称进行映射,如我提到的@Column(name="gallery_id")
,或者示例@JoinColumns({@JoinColumn(name="gallery_id" referencedColumnName="id")})