blacktie24 blacktie24 - 1 year ago 39
PHP Question

When inserting an entity with associations, is there a way to just use the FK instead of retrieving the entity?

I need to insert an entity which has associations.

If I already have the FK's of the associated entities, is there a way to insert the primary entity into the db with just the FK's populated?

Or do I always have to

  • retrieve the associated entities via the FK's,

  • populate the primary entity's properties referring to the assocations,

  • and then invoke the persist method.

Answer Source

You want a reference proxy

Let's say I have Posts and Tags. A Post hasMany Tags. I get a bunch of tags from the user, who checked a bunch of checkboxes.

The following would add tags to an existing post, without fetching each tag entity first. It does this by using reference proxies, generated by EntityManager::getReference():

$tag_ids = $_POST['tag_id']; // an array of integers representing tag IDs.
$post = $em->getRepository('Post')->find($post_id); // returns a Post entity.

foreach($tags_ids as $tid){