제 질문은 분명하지 않지만 여기에 요점을 설명하려고합니다. 나는 사용자가 선생님이 될 수있는 많은 것을 자기 참조하는 관계가 있다고 가정하고 선생님은 학생이 될 수 있습니다. (질문에 대답 할 수는 있지만 너무 많이 물을 수도 있습니다.) Doctrine : 관계에 요소를 추가하는 방법
namespace Entities;
/** @Entity @Table(name="users")) */
class User {
/**
* @Id @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @Column(type="string", length="30")
*/
private $name;
/**
* @ManyToMany(targetEntity="User", inversedBy="teachers")
* @JoinTable(name="Teachers_Students",
* joinColumns={@JoinColumn(name="teacher", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="student", referencedColumnName="id")}
* )
*/
private $students;
/**
* @ManyToMany(targetEntity="User", mappedBy="students")
*/
private $teachers;
function getName() {
return $this->name;
}
function setName($name) {
$this->name = $name;
}
function getStudents() {
return $this->students;
}
function getTeachers() {
return $this->teachers;
}
}
내가 소수의 사용자
$user1 = new User;
$user1->setName("user 1");
$user2 = new User;
$user2->setName("user 2");
$user3 = new User;
$user3->setName("user 3");
$user4 = new User;
$user3->setName("user 4");
을 가지고 내가, 내가, doctrine reference을 읽고 있었다 그들 사이에 설정 교사 - 학생 관계에 좋아 u는에 요소를 추가 할 Collections::add()
를 사용할 수있는 것을보고 말 컬렉션
// user1 is a teacher to user2 & 3
$user1->getStudents()->add($user2);
$user1->getStudents()->add($user3);
// user2 is a teacher to user3
$user2->getStudents()->add($user3);
// user4 is a student to user2
// tests if adding something from the inverse side works
$user4->getTeachers()->add($user2);
그러나 이것은
01 실패Fatal error: Call to a member function add() on a non-object in D:\ResourceLibrary\Frameworks\Doctrine\tools\sandbox\index.php on line 70
컬렉션이나 관계에 요소를 추가하려면 어떻게해야합니까?
덕분에, 그것을 해결되는. 하지만 모든 관계에 대해 그렇게해야합니까? 문서의 샘플 코드는 이와 같이 관계를 초기화해야한다고 지정하지 않습니다. '@ OneToMany','@ ManyToMany' 등을 사용한다고 말했습니다. annotations –
위의 링크는 깨졌지만 몇 시간 동안 때때로이 속성이 제대로 초기화되지 않는 경우가 종종 있습니다. – danielrvt