Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

modified DoctrineWriter's setValue to check for manyToMany add methods #124

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

intrepion
Copy link

This PR is for allowing DoctrineWriter to handle updating many-to-many and one-to-many associations that use add and remove methods. The unit tests have also been updated.

@ddeboer
Copy link
Owner

ddeboer commented Dec 6, 2014

Interesting! Could you update DoctrineWriter docs too?

@intrepion
Copy link
Author

Sure thing!

@ddeboer
Copy link
Owner

ddeboer commented Dec 7, 2014

Great! If you could do so in this PR, I’ll merge everything in one go.

@Baachi
Copy link
Collaborator

Baachi commented Jan 13, 2015

Really cool 👍

@WouterSioen
Copy link
Contributor

@intrepion @ddeboer Any news on this? I kindof need this.

@WouterSioen
Copy link
Contributor

I've fixed this by adding a setter on my many to many relation, so no need to hurry anymore ;)

@ip512
Copy link
Contributor

ip512 commented Apr 19, 2015

I'm interested in this PR. There is just missing documentation for it to be merged ?

@ddeboer
Copy link
Owner

ddeboer commented May 28, 2015

Could you please rebase this on master so we can merge this?

Conflicts:
	src/Writer/DoctrineWriter.php
	tests/Writer/DoctrineWriterTest.php
@Nexotap
Copy link

Nexotap commented Oct 2, 2015

I almost wrote something similar by myself. But now that I've found this I'm wondering when it will be merged?

Update: Tried to copy/paste setValue(...). Doesn't seem to work out of box right now. Also, when defining a $setter variable inside the function, wouldnt it make obsolte to provide such a variable to the function as an argument?

Update2:
Just in case you are interested. Here's the code of that function which works for me. Maybe it's usefull for you.

    /**
     * Call a setter of the entity
     *
     * @param object $entity
     * @param mixed  $value
     * @param string $fieldName
     */
    protected function setValue($entity, $value, $fieldName)
    {
        $getter  = 'get' . ucfirst($fieldName);
        $setter  = 'set' . ucfirst($fieldName);
        $adder   = 'add' . ucfirst($fieldName);
        $remover = 'remove' . ucfirst($fieldName);

        if (method_exists($entity, $setter))
        {
            $entity->$setter($value);
        }
        elseif (method_exists($entity, $adder))
        {
            $oldValue = $entity->$getter();
            if ($oldValue)
            {
                foreach ($oldValue as $oldItem)
                {
                    $entity->$remover($oldItem);
                }
            }
            if (is_array($value))
            {
                foreach ($value as $newItem)
                {
                    $entity->$adder($newItem);
                }
            }
            else
                $entity->$adder($value);
         }
    }

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants