я думаю, что мой вопрос не ясен, но я пытаюсь проиллюстрировать мою точку зрения здесь. Предполагая, что у меня есть отношения многие ко многим, которые ссылаются на себя, где пользователь может быть учителем (скажем, вы отвечаете на SO), а учитель может быть студентом (вы можете отвечать на вопросы, но также можете задавать вопросы).
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");
и мне нравится устанавливать отношения между учителем и учеником, я читал ссылку на доктрину , видел, что вы можете использовать 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);
но это не так с
Неустранимая ошибка: вызов функции-члена
add () для необъекта в
D: \ ResourceLibrary \ Frameworks \ Doctrine \ инструменты \ песочница \ index.php
по линии 70
как я могу добавить элементы в коллекцию или отношения?