1
class Profile {
    /** @OneToMany(targetEntity="Link", mappedBy="owner") */
    private $links;  
}

class Link {
    /**
    * @ManyToOne(targetEntity="Profile", inversedBy="links")
    * @JoinColumn(name="owner_id", referencedColumnName="id")
    */    
    public $owner;
    /**
     * @ManyToOne(targetEntity="Profile")
     * @JoinColumn(name="subject_id", referencedColumnName="id")
     */    
    public $subject;    
}

$em->findBy(array("owner"=>$owner,"subject"=>$subject)); 

認識されないフィールドを与える:所有者

もちろん回避策はありますが、見た目は醜いです

$em
->createQuery('SELECT l FROM \Dating\Models\Link l WHERE l.owner = ?1 AND l.subject = ?2')
->setParameter(1,$owner)
->setParameter(2,$subject)
->getResult();

独自のメソッドを記述せずにfindByを使用する可能性はありますか?

4

2 に答える 2

1

コードはすべて正しいです。Doctrine2は現在ベータ版であり、beta4のバグでした。GITから最新バージョンをダウンロードしてみてください。うまくいくはずです。

于 2010-11-01T13:49:41.507 に答える
0

ownerフィールドではありませんowner_id。それを使ってみてください。

于 2010-10-30T15:02:37.793 に答える