3

我有两个实体 user1 和技能,其中一个用户将拥有许多技能。

/** @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”的“技能”表中的外键。

4

1 回答 1

1

我想你可能更喜欢ManyToMany关系,因为很多用户会有很多技能。

那么您不必将字段称为 ID - ORM 的目的是隐藏对象关系下的关系结构:您的$uid字段应该被称为$user.

这样说,你的语法是正确的 - 你确定你的数据库模式与实体同步吗?你有正确的数据吗?如果你var_dump是单个用户,你会得到什么?

于 2012-09-10T12:21:59.607 回答