我有两个实体user1和skills,其中一个用户将拥有许多技能。
/** @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"表中的外键。
我认为您可能更喜欢ManyToMany
关系,因为许多用户将拥有许多技能。
这样就不必将字段称为ID,ORM的目的是隐藏对象关系下的关系结构:$uid
字段应该被称为$user
。
也就是说,你的语法是正确的——你确定你的数据库模式与实体同步吗?你有正确的数据吗?如果你var_dump
是一个单一用户,你会得到什么?