Я работаю с FOSUserBunde и хочу создать отношение ManytoMany для объекта User.
Я видел этот Почта и пытался сделать то же самое.
Итак, это мой код
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type = "integer")
* @ORM\GeneratedValue(strategy = "AUTO")
*/
protected $id;
/**
* @ORM\ManyToMany(targetEntity = "AppBundle\Entity\User", inversedBy = "userfriends")
*/
private $users;
/**
* @ORM\ManyToMany(targetEntity = "AppBundle\Entity\User", mappedBy = "users")
*/
private $userfriends;
Когда я запускаю команду обновления базы данных, у меня есть таблица с user_user с usertarget и usersource
Моя проблема в том, что я хочу отображать все usersfriends.
Любая помощь, пожалуйста ..






Я думаю, что вы пропустили некоторые биты в своем коде. Во-первых, поскольку вы создаете Many-to-Many, это приведет к созданию новой таблицы. Это ваш (пользовательская цель, пользовательский источник). Тогда вы понимаете, что где-то должен быть какой-то массив или способ получить информацию. В SQL ваша самореференция многие-ко-многим для пользователя Джорджа, показывающего всех своих друзей, будет выглядеть так:
SELECT F.Id
FROM user U
JOIN user_user MtM ON U.Id = MtM.usersource
JOIN user F ON F.Id = MtM.usertarget
WHERE U.Name = 'George'
Объединения следует как-то воспроизвести в коде. Возможно так:
* @ORM\JoinTable(name = "user_user",
* joinColumns = {
* @ORM\JoinColumn(name = "usersource",
* referencedColumnName = "userfriends")
* },
* inverseJoinColumns = {
* @ORM\JoinColumn(name = "usertarget", referencedColumnName = "id")
* }
* )
Ответ во многом зависит от того, что вы подразумеваете под отображать всех пользователей, друзей. Для представлений в Symfony вам может понадобиться что-то более сложное, чем просто переменная. Когда будут данные, им нужно наглядное представление, какие-то средства для отображения результатов. Ознакомьтесь со следующими ссылками, чтобы найти некоторые идеи:
Запросите отношение ManyToMany и покажите хороший результат в Symfony с помощью Doctrine Обратите внимание, что есть веточка для представления результатов. В вашем случае это может выглядеть так:
<tr> <td> {{user.id}} </ td> <td> {{user.name}} </ td> <td> {% для друга в user.userfriends%} {{friend.id}} {% endfor%} </ td> </ tr>
Функция «многие ко многим» реализована с помощью дополнительной таблицы, в которой два столбца «указывают» на связанные сущности. В вашем случае оба столбца указывают на один и тот же объект, то есть на таблицу, что не имеет значения. Дело в том, что я не вижу соединения, то есть отношения к вашей реализации. Я добавляю дополнительную часть в ответ для этой части ORM.
Спасибо за ваш ответ ! но я действительно не мог найти решение! Я проверил обе ссылки, но здесь все по-другому. поскольку я хочу, чтобы Many_Many было на том же объекте (Пользователь расширяет BaseUser), я попытался добавить «/ ** * @var \ Doctrine \ Common \ Collections \ Collection | User []» и это в конструкторе «$ this-> users = новый ArrayCollection (); " и тогда я не знал, что еще делать, чтобы отображать для каждого пользователя его друзей. (PS я новичок в Symfony)