【问题标题】:Doctrine - ORM - Fetching all data using entityManager with associactionDoctrine - ORM - 使用关联的 entityManager 获取所有数据
【发布时间】:2012-09-03 04:02:15
【问题描述】:

我有两个实体 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'的'skills'表的外键。

【问题讨论】:

    标签: php doctrine-orm


    【解决方案1】:

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

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

    也就是说,您的语法是正确的 - 您确定您的数据库架构与实体同步吗?你有正确的数据吗?如果你var_dump单个用户,你会得到什么?

    【讨论】:

    • 我检查了一个用户,它只能获取与用户相关的数据。我认为我无法正确进行映射或关联。关于ManyToMany,我非常需要OneToMany。你能给我一些OneToMany 的例子吗?
    • 虽然你没有使用 symfony,但它的Doctrine guide 可能对你有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多