1

我正在 symfony2 中使用教义创建一个包含客人、场地、活动和客人类别的应用程序。仅与 symfony2 联系了 3 周,我已经完成为 sql 中的所有实体创建模式表,它们之间的依赖关系和每个实体的 crud。我的问题是理论多于实际。

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

  • 行政人员
  • 组织者
  • 客人

每个客人都有自己的个人资料,每个组织者都将被“附加”到他的客人身上——简单地说,组织者 X 只会交流和查看客人 X-1、X-2 等 - 他将无法查看Y-1。对你来说,我问这样的问题可能看起来非常简单和有趣,但是......我是自学成才的:)

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

如果带有 token=vsfv2435r3frwf24t5grf 的客人 John 有任何事件/类别/场所,则在事件或类别或场所中找到相同的令牌并分配权限。

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

4

2 回答 2

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

于 2012-08-10T18:48:28.527 回答
0

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

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

事件

...

/**
 * @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;
于 2012-08-10T19:01:08.380 回答