我正在使用doctrine创建一个包含guest虚拟机,场所,事件和guest-category类别的应用程序。仅与symfony2保持联系3周,我已经完成了为sql中的所有实体创建模式表,它们之间的依赖关系和每个实体的crud。我的问题更具理论性而非实际性。
我将创建一个安全包(来自本书中的安全包或FOSUserBundle)。然后我将设置三个角色:
每位客人都有自己的个人资料,每个组织者都会“附加”给他的客人 - 简单来说,组织者X只会沟通和查看来宾X-1,X-2等 - 他不会能够查看Y-1。你可能觉得这样的问题非常简单和有趣,但是......我自学成才了。)
问题是:我如何将活动附加到组织者及其客人?我能想象到的最简单的方法是:为每个guest虚拟机,事件,类别,事件设置一个唯一的令牌(或任何自生成的代码)并加入表。
如果来宾John与令牌= vsfv2435r3frwf24t5grf有任何事件/类别/场地 在事件或类别或地点中找到相同的令牌并分配权限。
听起来合乎逻辑还是愚蠢?
答案 0 :(得分:1)
您需要查看学说关联映射(一对多,多对多等)。
http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/association-mapping.html
它们很容易设置(您可以在Symfony中使用注释或在您的yml架构文件中执行)并且可以让您轻松地执行您所描述的内容,请查看Symfony文档以获取数据库了解更多信息
答案 1 :(得分:0)
您可以为Organiser
和Guest
创建交叉表,指出他们参加/组织的活动。每个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;