3

user1 と skills の 2 つのエンティティーがあり、1 人のユーザーが多くのスキルを持っています。

/** @Entity **/
class user1 {
    /** @Id @Column(type="integer") @GeneratedValue **/
    public $id;
    /** @Column(type="string") **/
    public $name;
    /**
     * 
     * @OneToMany(targetEntity="skills", mappedBy="uid")
     */
    public $skillset;
}

/** @Entity **/
class skills {        
    /** @Id @Column(type="integer") @GeneratedValue **/
    public $id;
    /** @Column(type="string") **/
    public $skill;
    /**
     * @ManyToOne(targetEntity="user1", inversedBy="skillset")
     **/
    public $uid;
}

しかし、entityManager と getrepository を使用してすべてのレコードをフェッチしたい

$usr= $entityManager->getRepository("user1")->findAll();  

しかし、テーブル「user1」からのデータのみが得られます。また、特定のユーザーに関連付けられている「スキル」からデータを取得できません。

「uid」は、「user1」テーブルの「id」の「skills」テーブルの外部キーです。

4

1 に答える 1

1

ManyToMany多くのユーザーは多くのスキルを持っているため、関係を好むかもしれません。

次に、フィールドを ID として参照する必要はありません。ORM の目的は、オブジェクトの関係の下にリレーショナル構造を隠すことです。$uidフィールドは と呼ばれる必要があります$user

そうは言っても、あなたの構文は正しいです-データベーススキーマがエンティティと同期していると確信していますか? その中に適切なデータがありますか?単一のユーザーの場合var_dump、何が得られますか?

于 2012-09-10T12:21:59.607 に答える