我有3个实体:
风格
颜色
文章
文章与两个实体都有ManyToOne关系(文章是样式和颜色的唯一组合)。所有实体都有自动递增的代理整数索引。
我有一个样式实体和一个颜色实体,我想创建一个链接这两个实体的新文章(如果还没有)。鉴于没有办法使用doctrine进行等效的('INSERT on DUPLICATE KEY UPDATE'),我需要找到任何与我的Style和Color实体有关系的文章。如果没有匹配,则创建一个新实体。
如何在系统中找到与样式和颜色实体相关的任何文章实体?
/**
* @Entity
*/
class Style{
/** @Id @GeneratedValue @Column (type="integer") */
private $id;
/** @Column (name="name", type="string") */
private $name;
/**
* @OneToMany(targetEntity="Article", mappedBy="style", cascade={"persist"})
*/
private $articles;
}
class Colour{
/** @Id @GeneratedValue @Column (type="integer") */
private $id;
/** @Column (name="name", type="string") */
private $name;
}
class Article{
/** @Id @GeneratedValue @Column (type="integer") */
private $id;
/**
* @ManyToOne(targetEntity="Style", inversedBy="articles", cascade={"persist"})
*/
private $style;
/**
* @ManyToOne(targetEntity="Colour", cascade={"persist"})
*/
private $colour;
}
此处描述的'findBy'方法http://www.doctrine-project.org/docs/orm/2.0/en/reference/working-with-objects.html似乎只允许通过使用实体属性的字符串值来查找实体,而且一次只能使用其中一个。