Я начинаю моделировать db/entity в symfony2. У меня есть две сущности. Сначала пользователь, а второй - группы. Я хочу подключить оба. Я думаю, что я должен использовать много разных отношений (?).sf2 - список всех групп с информацией, если пользователь присоединился к этой группе
Но моя главная проблема заключается в том, как я могу получить список всех групп с информацией, если пользователь присоединился к этой группе.
Группа Entity:
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="GroupBundle\Entity\Group">
<id name="id" type="integer" column="id">
<generator strategy="AUTO"/>
</id>
<field name="name" type="string" column="name" length="50"/>
<field name="description" type="string" column="description"/>
<many-to-many field="users" mapped-by="groups" target-entity="AccountBundle\Entity\User"/>
</entity>
</doctrine-mapping>
и User Entity:
<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
<entity name="AccountBundle\Entity\User">
<id name="id" type="integer" column="id">
<generator strategy="AUTO"/>
</id>
<field name="username" type="string" column="username" length="255"/>
<field name="password" type="string" column="password" length="255"/>
<field name="salt" type="string" column="salt" length="255"/>
<field name="email" type="string" column="email" length="255"/>
<field name="active" type="boolean" column="active"></field>
<field name="token" type="string" column="token" length="255"/>
<field name="lastLoginTime" type="datetime" column="lastLoginTime" nullable="true"/>
<field name="registerTime" type="datetime" column="registerTime"/>
<one-to-many field="events" target-entity="CoreBundle\Entity\Event" mapped-by="user" />
<many-to-many field="groups" inversed-by="users" target-entity="GroupBundle\Entity\Group">
<join-table name="UserGroups">
<join-columns>
<join-column name="userId" referenced-column-name="id" />
</join-columns>
<inverse-join-columns>
<join-column name="groupId" referenced-column-name="id" />
</inverse-join-columns>
</join-table>
</many-to-many>
</entity>
</doctrine-mapping>
Там нет никакой связи между там еще, потому что я не знаю, что лучше. Может быть, мне нужно создать дополнительную сущность между подобным UserGroup?
D4V1D у вас есть право. Предполагается: пользователь может присоединиться ко многим группам, и группа может иметь много пользователей.
Okey Я добавляю отношения «многие ко многим». Надеюсь, я сделал все правильно.
И теперь. Это фрагмент моего контроллера:
$em = $this->getDoctrine()->getManager();
$repo = $em->getRepository("GroupBundle\Entity\Group");
$groups = $repo->findAll();
$user = $this->getUser();
$user_groups = $user->getGroups();
foreach($user_groups as $user_group){
/* @var $group Group */
foreach($groups as $group){
if($group->getId() == $user_group->getId()){
$group->setUserInGroup(true); // of course i extend my entity file about extra set and get method.
}
}
}
return $this->render('GroupBundle:showAll.html.twig', array('groups' => $groups));
и вид:
{% for group in groups %}
<div>
{{ group.name }}
{% if(group.getUserInGroup()) %}
<a href="#">join</a>
{% endif %}
</div>
{% endfor %}
Я пытаюсь найти лучший и правильный способ сделать это.
является группой ролей или что ??? Вам нужно разместить дополнительную информацию о типе отношений между ними. –
Возможно, вам следует опубликовать код как ваших 'User', так и' Group'. Мы легко догадываемся, что многие «пользователи» могут присоединяться ко многим «группам», а «группы» могут иметь много «пользователей», но нам нужен часть вашего кода. – D4V1D
Ребята, у вас есть право. Я добавил код. – shinji