每个用户如何在symfony2中拥有他的私人学说条目?

时间:2012-08-10 17:44:21

标签: php symfony doctrine-orm

我正在使用doctrine创建一个包含guest虚拟机,场所,事件和guest-category类别的应用程序。仅与symfony2保持联系3周,我已经完成了为sql中的所有实体创建模式表,它们之间的依赖关系和每个实体的crud。我的问题更具理论性而非实际性。

我将创建一个安全包(来自本书中的安全包或FOSUserBundle)。然后我将设置三个角色:

  • 管理员
  • 管理
  • 访客

每位客人都有自己的个人资料,每个组织者都会“附加”给他的客人 - 简单来说,组织者X只会沟通和查看来宾X-1,X-2等 - 他不会能够查看Y-1。你可能觉得这样的问题非常简单和有趣,但是......我自学成才了。)

问题是:我如何将活动附加到组织者及其客人?我能想象到的最简单的方法是:为每个guest虚拟机,事件,类别,事件设置一个唯一的令牌(或任何自生成的代码)并加入表。

如果来宾John与令牌= vsfv2435r3frwf24t5grf有任何事件/类别/场地 在事件或类别或地点中找到相同的令牌并分配权限。

听起来合乎逻辑还是愚蠢?

2 个答案:

答案 0 :(得分:1)

您需要查看学说关联映射(一对多,多对多等)。

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/association-mapping.html

它们很容易设置(您可以在Symfony中使用注释或在您的yml架构文件中执行)并且可以让您轻松地执行您所描述的内容,请查看Symfony文档以获取数据库了解更多信息

http://symfony.com/doc/current/book/doctrine.html

答案 1 :(得分:0)

您可以为OrganiserGuest创建交叉表,指出他们参加/组织的活动。每个Guest也会有Organiser的交叉表。这样您就可以轻松地将组织者分配给访客并按其过滤(我假设访客可以参加多个活动等)。

在Doctrine世界中,它看起来像这样:

<强>事件

...

/**
 * @ORM\ManyToMany(targetEntity="Organiser", inversedBy="events")
 */
protected $organisers;

/**
 * @ORM\ManyToMany(targetEntity="Guest", inversedBy="events")
 */
protected $guests;

<强>管理

...

/**
 * @ORM\ManyToMany(targetEntity="Event", mappedBy="organisers")
 */
protected $events;

/**
 * @ORM\ManyToMany(targetEntity="Guest", mappedBy="organisers")
 */
protected $guests;

<强>访客

...

/**
 * @ORM\ManyToMany(targetEntity="Event", mappedBy="guests")
 */
protected $events;

/**
 * @ORM\ManyToMany(targetEntity="Organiser", inversedBy="guests")
 */
protected $organisers;