Radolino
Radolino

Reputation: 1844

How can every user have his private doctrine entries in a symfony2?

I am creating an application with guests, venues, events and guest-categories in symfony2 with doctrine. Being in touch for 3 weeks only with symfony2, I have accomplished to create the schema tables for all entities in sql, their between dependencies and crud for each one. My problem is more theoretical than practical.

I will create a bundle for security (from the Security bundle in the book or FOSUserBundle). Then I will set up three roles:

Each guest will have its own profile and each organiser will be "attached" to his guests - in simple words, the Organizer X will only communicate and view Guest X-1, X-2 etc. - he won't be able to view Y-1. It might seem very simple and funny to you that I am asking a question like that but... I am self taught :)

The question is: How can I attach an event to an organiser and its guests? The simplest method I can imagine is : set a unique token (or any self generated code) for every guest, event, category, event and join the tables.

If guest John with token=vsfv2435r3frwf24t5grf has any events/categories/venues find the same token in the event or category or venue and assign permissions.

Does it sound logical or foolish ?

Upvotes: 1

Views: 81

Answers (2)

Ondrej Slinták
Ondrej Slinták

Reputation: 31910

You could just create cross table for Organiser and Guest indicating which event they do attend / organise. Each Guest would also have have cross table to Organiser. This way you could easily assign organisers to guests and filter by it (I'm assuming guests could attend multiple events etc).

In Doctrine world it'd look like this:

Event

...

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

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

Organiser

...

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

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

Guest

...

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

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

Upvotes: 0

Carlos Granados
Carlos Granados

Reputation: 11351

You need to look at doctrine association mapping (one to many, many to many, etc.. )

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

They are quite easy to set up (you can do it in Symfony with a annotations or in your yml schema file) and will let you do the kind of things you are describing easily, take a look at the Symfony documentation for databases for more info

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

Upvotes: 1

Related Questions