我在Zend用的是教义2。
我正试图找出如何从当前对象访问相关模型的属性/方法。
例如,我们有两张桌子:学校和学生。
许多学生属于一个学校,所以这是一个多对一的关系,我只想列出每个学校的所有学生。我不想查询学生记录来查找他们所属学校的详细信息,因此这被归类为单向关系。
现在,为了在原则2中的表之间建立多对一的关系,我将在students实体中添加这个,因为它是拥有方:
/**
* @ManyToOne(targetEntity="Schools")
* @JoinColumn(name="school_id", referencedColumnName="school_id")
*/
private $schoolId;
其中name值分别对应于students表和schools表中的列名。
因此,如果我有一个学校记录的对象,我如何访问学生属性/方法?
echo $oSchool->Students->getName(); // doesn't work
我不能理解我做错了什么,代理类正在生成。如果有人能指点我正确的方向,我将不胜感激。
最佳答案
在学校里你会想要这样的东西
/**
* @param \Doctrine\Common\Collections\Collection $property
* @OneToMany(targetEntity="Students", mappedBy="school")
*/
private $student;
public function __construct() {
$this->student = new \Doctrine\Common\Collections\ArrayCollection();
}
public function getStudent() {
return $this->student;
}
有了这个,你可以做如下的事情,这给你一个ArrayCollection与所有学生对象
$studentsArray = $school->getStudent();
希望能帮上忙…docrine 2非常强大,但是有些东西没有很好的记录。在Working with Assiciations上的文档中提供了有关此方面的更多信息。
关于php - 如何在Doctrine 2中使用多对一关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6735635/