<!-- 
RSS generated by JIRA (5.2.7#850-sha1:b2af0c8dc8537b36121c6a579fabbdf79fc919e5) at Tue May 21 22:30:44 UTC 2013

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
For example:
http://www.doctrine-project.org/jira/si/jira.issueviews:issue-xml/DC-329/DC-329.xml?field=key&field=summary
-->
<rss version="0.92" >
<channel>
    <title>Doctrine Project</title>
    <link>http://www.doctrine-project.org/jira</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>5.2.7</version>
        <build-number>850</build-number>
        <build-date>21-02-2013</build-date>
    </build-info>

<item>
            <title>[DC-329] Problem saving Self Referencing (Nest Relations)</title>
                <link>http://www.doctrine-project.org/jira/browse/DC-329</link>
                <project id="10031" key="DC">Doctrine 1</project>
                        <description>&lt;p&gt;There is a problem when you save Many to Many Self Referencing (Nest Relations).&lt;/p&gt;

&lt;p&gt;I used the same example that it&apos;s used on Doctrine 1.2 Self Referencing (Nest Relations) Documentation:&lt;/p&gt;

&lt;p&gt;My Schema:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;User:&lt;br/&gt;
  columns:&lt;br/&gt;
    name: &lt;/p&gt;
&lt;div class=&quot;error&quot;&gt;&lt;span class=&quot;error&quot;&gt;Unknown macro: { type}&lt;/span&gt; &lt;/div&gt;
&lt;p&gt;  relations:&lt;br/&gt;
    Parents:&lt;br/&gt;
      class: User&lt;br/&gt;
      local: child_id&lt;br/&gt;
      foreign: parent_id&lt;br/&gt;
      refClass: UserReference&lt;br/&gt;
      foreignAlias: Children&lt;/p&gt;

&lt;p&gt;UserReference:&lt;br/&gt;
  columns:&lt;br/&gt;
    parent_id:&lt;br/&gt;
      type: integer&lt;br/&gt;
      primary: true&lt;br/&gt;
    child_id:&lt;br/&gt;
      type: integer&lt;br/&gt;
      primary: true&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Fixtures:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;User:&lt;br/&gt;
  james:&lt;br/&gt;
    name: James&lt;br/&gt;
  alexander:&lt;br/&gt;
    name: Alexander&lt;br/&gt;
  david:&lt;br/&gt;
    name: David&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The problem happens with the Children. The first time I assigned children and saved the User, there is no problem; but when I saved the User again (without any change on him) the values in the UserReference? table changes: the &quot;parent_id&quot; takes the value of the &quot;child_id&quot;.&lt;/p&gt;

&lt;p&gt;I test it with Sf 1.4 and with Sf 1.3 stable versions, and I&apos;ve got the same error.&lt;/p&gt;

&lt;p&gt;If it not clear to understand what I&apos;m saying, I put a &quot;very ilustrative&quot; image about the form and how change the values of the UserReference? table. Please see it, because it would be very usefull for understanding (explains better than my terrible English)&lt;/p&gt;

&lt;p&gt;Thanks for all your work! &lt;/p&gt;

&lt;p&gt;P. D. &lt;/p&gt;

&lt;p&gt;I forgot to to say that watching the stack trace I think that the problem is in:&lt;/p&gt;

&lt;p&gt;symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php&lt;/p&gt;

&lt;p&gt;In the line 429:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;public function saveAssociations(Doctrine_Record $record)&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I would like to help more, but I couldn&apos;t figure out how this function works.&lt;/p&gt;</description>
                <environment>Mac OSX 10.5, Symfony 1.4 and MAMP</environment>
            <key id="10566">DC-329</key>
            <summary>Problem saving Self Referencing (Nest Relations)</summary>
                <type id="1" iconUrl="http://www.doctrine-project.org/jira/images/icons/issuetypes/bug.png">Bug</type>
                                <priority id="3" iconUrl="http://www.doctrine-project.org/jira/images/icons/priorities/major.png">Major</priority>
                    <status id="1" iconUrl="http://www.doctrine-project.org/jira/images/icons/statuses/open.png">Open</status>
                    <resolution id="-1">Unresolved</resolution>
                                <assignee username="jwage">Jonathan H. Wage</assignee>
                                <reporter username="jaimesuez">Jaime Suez</reporter>
                        <labels>
                    </labels>
                <created>Sat, 5 Dec 2009 17:48:37 +0000</created>
                <updated>Fri, 3 Jun 2011 13:14:55 +0000</updated>
                                    <version>1.2.0</version>
                                                <component>Relations</component>
                        <due></due>
                    <votes>14</votes>
                        <watches>14</watches>
                        <comments>
                    <comment id="11033" author="jaimesuez" created="Mon, 7 Dec 2009 00:38:52 +0000"  >&lt;p&gt;This picture explains the error that it&apos;s done when you do an insert and then you save it again.&lt;/p&gt;</comment>
                    <comment id="11048" author="jwage" created="Mon, 7 Dec 2009 17:59:04 +0000"  >&lt;p&gt;Can you provide a failing Doctrine test case? This may be a problem with Symfony and not Doctrine.&lt;/p&gt;</comment>
                    <comment id="11079" author="jaimesuez" created="Tue, 8 Dec 2009 12:55:47 +0000"  >&lt;p&gt;First I published this bug on Symfony, because I thought that was a problem with Symfony, but you set it as invalid because it&apos;s belong to Doctrine.&lt;/p&gt;

&lt;p&gt;This is the ticket on symfony: &lt;br/&gt;
&lt;a href=&quot;http://trac.symfony-project.org/ticket/7690&quot; class=&quot;external-link&quot;&gt;http://trac.symfony-project.org/ticket/7690&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I could do the Doctrine test case, but in one more mounth, because tomorrow I go out for vacations.&lt;br/&gt;
When I come back I&apos;ll do them.&lt;/p&gt;</comment>
                    <comment id="11244" author="psylosss" created="Sun, 20 Dec 2009 20:01:08 +0000"  >&lt;p&gt;Yes, I have got the same problem. During hours of debugging and exploring Doctrine&apos;s code, I found that problem localized in Hydrator component. I cannot digg deeper, so I ask you to fix it very much&lt;/p&gt;</comment>
                    <comment id="11296" author="p16" created="Sat, 26 Dec 2009 15:09:43 +0000"  >&lt;p&gt;Hi,&lt;br/&gt;
I had this problem in the 1.0 version of doctrine as well.&lt;br/&gt;
Using symfony, I upgraded to symfony 1.3 and doctrine 1.2 and I&apos;ve found the same problem.&lt;/p&gt;

&lt;p&gt;Attached to this comment you can find the files containing the schema I used (it is the same as that describe on this ticket but with a different class naming), and 2 unit tests. One using the symfony form  and one using directly the doctrine objects. They report the bug discussed on this ticket and show another bug saving objects that already have one ore more relations.&lt;/p&gt;

&lt;p&gt;As fixtures I used a fixtures.yml file containing: &lt;/p&gt;

&lt;p&gt;Issue:&lt;br/&gt;
&amp;lt;?php for ($i = 1; $i &amp;lt;= 30; $i++): ?&amp;gt;&lt;br/&gt;
  Issue_&amp;lt;?php echo $i; ?&amp;gt;:&lt;br/&gt;
    title: &quot;new issue &amp;lt;?php echo $i ?&amp;gt;&quot;&lt;br/&gt;
&amp;lt;?php endfor; ?&amp;gt;&lt;/p&gt;


&lt;p&gt;The following are the tests results:&lt;/p&gt;

&lt;p&gt;&amp;#8211; testEqualNestRelationsTest.php (using the forms) &amp;#8211; &lt;/p&gt;

&lt;p&gt;&amp;gt; First form for first issue: creation of the relation &quot;issue 1 -&amp;gt; issue 2&quot;&lt;br/&gt;
ok 1 - the edit form for issue 1 is valid&lt;br/&gt;
ok 2 - form1 saved&lt;br/&gt;
ok 3 - issue 1 is related with another issue&lt;br/&gt;
ok 4 - issue 1 is really related with issue 2&lt;/p&gt;

&lt;p&gt;&amp;gt; Second form for first issue: saving the relation between &quot;issue 1&quot; and &quot;issue 2&quot; from &quot;issue 2&quot;&apos;s form&lt;br/&gt;
ok 5 - the edit form for issue 2 is valid&lt;br/&gt;
ok 6 - form2 saved&lt;br/&gt;
not ok 7 - issue 2 is related with another issue  ******** this is the problem reported on this ticket ********&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Failed test (./test/unit/testEqualNestRelationsTest.php at line 57)&lt;/li&gt;
	&lt;li&gt;got: 0&lt;/li&gt;
	&lt;li&gt;expected: 1&lt;br/&gt;
not ok 8 - issue 2 is really related with issue 1&lt;/li&gt;
	&lt;li&gt;Failed test (./test/unit/testEqualNestRelationsTest.php at line 58)&lt;/li&gt;
	&lt;li&gt;got: NULL&lt;/li&gt;
	&lt;li&gt;expected: 1&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;ok 9 - issue 1 is related with another issue&lt;br/&gt;
not ok 10 - issue 1 is really related with issue 2  ******** this is the problem reported on this ticket ********&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Failed test (./test/unit/testEqualNestRelationsTest.php at line 63)&lt;/li&gt;
	&lt;li&gt;got: &apos;1&apos;&lt;/li&gt;
	&lt;li&gt;expected: 2&lt;br/&gt;
&amp;gt; Checking the relation table IssueReference ...&lt;br/&gt;
ok 11 - There is only one relation saved on IssueReference&lt;br/&gt;
ok 12 - 1 is the issue1 field of the relation&lt;br/&gt;
not ok 13 - 2 is the issue2 field of the relation ******** this is the problem reported on this ticket ********&lt;/li&gt;
	&lt;li&gt;Failed test (./test/unit/testEqualNestRelationsTest.php at line 71)&lt;/li&gt;
	&lt;li&gt;got: &apos;1&apos;&lt;/li&gt;
	&lt;li&gt;expected: &apos;2&apos;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&amp;gt; multi selection proof&lt;br/&gt;
ok 14 - the edit form for issue 1 is valid&lt;br/&gt;
ok 15 - form1 saved&lt;br/&gt;
ok 16 - the edit form for issue 2 is valid&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;
	&lt;ul&gt;
		&lt;li&gt;
		&lt;ul&gt;
			&lt;li&gt;
			&lt;ul&gt;
				&lt;li&gt;
				&lt;ul&gt;
					&lt;li&gt;
					&lt;ul&gt;
						&lt;li&gt;
						&lt;ul&gt;
							&lt;li&gt;
							&lt;ul&gt;
								&lt;li&gt;this is the other bug I&apos;ve found ********&lt;br/&gt;
not ok 17 - form2 exception catched : SQLSTATE&lt;span class=&quot;error&quot;&gt;&amp;#91;23000&amp;#93;&lt;/span&gt;: Integrity constraint violation: 1062 Duplicate entry &apos;1-1&apos; for key 1&lt;/li&gt;
							&lt;/ul&gt;
							&lt;/li&gt;
						&lt;/ul&gt;
						&lt;/li&gt;
					&lt;/ul&gt;
					&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
	&lt;li&gt;Failed test (./test/unit/testEqualNestRelationsTest.php at line 114)&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&amp;#8211; testNestedEqualRelationWithObjectsTest.php (test using the &quot;doctrine&quot; objects ) &amp;#8211;&lt;/p&gt;

&lt;p&gt;&amp;gt; Saving relation directly from the objects and not using the forms...&lt;br/&gt;
ok 1 - issue1 saved&lt;br/&gt;
&amp;gt; checking issue1 relations&lt;br/&gt;
ok 2 - issue 1 is related with another issue&lt;br/&gt;
ok 3 - issue 1 is really related with issue 2&lt;/p&gt;

&lt;p&gt;&amp;gt; checking &quot;reverse&quot; relation on issue2&lt;br/&gt;
ok 4 - issue 2 is related with another issue&lt;br/&gt;
ok 5 - issue 2 is really related with issue 1&lt;/p&gt;

&lt;p&gt;&amp;gt; adding a relation issue2-&amp;gt;issue1 directly&lt;br/&gt;
ok 6 - issue2 saved&lt;/p&gt;

&lt;p&gt;&amp;gt; checking issue2 relations&lt;br/&gt;
not ok 7 - issue 2 is related with another issue  ******** this is the problem reported on this ticket ********&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Failed test (./test/unit/testNestedEqualRelationWithObjectsTest.php at line 56)&lt;/li&gt;
	&lt;li&gt;got: 0&lt;/li&gt;
	&lt;li&gt;expected: 1&lt;br/&gt;
not ok 8 - issue 2 is really related with issue 1&lt;/li&gt;
	&lt;li&gt;Failed test (./test/unit/testNestedEqualRelationWithObjectsTest.php at line 57)&lt;/li&gt;
	&lt;li&gt;got: NULL&lt;/li&gt;
	&lt;li&gt;expected: 1&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&amp;gt; checking issue1 relations&lt;br/&gt;
ok 9 - issue 1 is related with another issue&lt;br/&gt;
not ok 10 - issue 1 is really related with issue 2  ******** this is the problem reported on this ticket ********&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Failed test (./test/unit/testNestedEqualRelationWithObjectsTest.php at line 63)&lt;/li&gt;
	&lt;li&gt;got: &apos;1&apos;&lt;/li&gt;
	&lt;li&gt;expected: 2&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&amp;gt; Checking the relation table IssueReference ...&lt;br/&gt;
ok 11 - There is only one relation saved on IssueReference&lt;br/&gt;
ok 12 - 1 is the issue1 field of the relation&lt;br/&gt;
not ok 13 - 2 is the issue2 field of the relation&lt;/p&gt;
&lt;ol&gt;
	&lt;li&gt;Failed test (./test/unit/testNestedEqualRelationWithObjectsTest.php at line 71)&lt;/li&gt;
	&lt;li&gt;got: &apos;1&apos;&lt;/li&gt;
	&lt;li&gt;expected: &apos;2&apos;&lt;/li&gt;
&lt;/ol&gt;


&lt;p&gt;&amp;gt; object multi adding relation proof&lt;br/&gt;
ok 14 - issue1 saved&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;
	&lt;ul&gt;
		&lt;li&gt;
		&lt;ul&gt;
			&lt;li&gt;
			&lt;ul&gt;
				&lt;li&gt;
				&lt;ul&gt;
					&lt;li&gt;
					&lt;ul&gt;
						&lt;li&gt;
						&lt;ul&gt;
							&lt;li&gt;
							&lt;ul&gt;
								&lt;li&gt;this is the other bug I&apos;ve found ********&lt;br/&gt;
not ok 15 - issue2 exception catched : SQLSTATE&lt;span class=&quot;error&quot;&gt;&amp;#91;23000&amp;#93;&lt;/span&gt;: Integrity constraint violation: 1062 Duplicate entry &apos;1-1&apos; for key 1&lt;/li&gt;
							&lt;/ul&gt;
							&lt;/li&gt;
						&lt;/ul&gt;
						&lt;/li&gt;
					&lt;/ul&gt;
					&lt;/li&gt;
				&lt;/ul&gt;
				&lt;/li&gt;
			&lt;/ul&gt;
			&lt;/li&gt;
		&lt;/ul&gt;
		&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
	&lt;li&gt;Failed test (./test/unit/testNestedEqualRelationWithObjectsTest.php at line 112)&lt;/li&gt;
&lt;/ol&gt;


</comment>
                    <comment id="11370" author="jaimesuez" created="Wed, 13 Jan 2010 15:27:21 +0000"  >&lt;p&gt;With the test provided by Filippo De Santis is any other thing needed??&lt;/p&gt;

&lt;p&gt;I still on vacations untill 3 of febrary, so then I could do any other thing needed.&lt;/p&gt;
</comment>
                    <comment id="11571" author="jaimesuez" created="Mon, 1 Feb 2010 15:54:37 +0000"  >&lt;p&gt;The necessary test have to be how are illustrated in this link???&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.doctrine-project.org/documentation/manual/1_2/en/unit-testing&quot; class=&quot;external-link&quot;&gt;http://www.doctrine-project.org/documentation/manual/1_2/en/unit-testing&lt;/a&gt;&lt;/p&gt;</comment>
                    <comment id="11648" author="bgm" created="Tue, 9 Feb 2010 22:35:23 +0000"  >&lt;p&gt;What has happen with this bug?? I also have the same problem...&lt;/p&gt;</comment>
                    <comment id="11968" author="jwage" created="Tue, 2 Mar 2010 12:43:43 +0000"  >&lt;p&gt;Hi, yes. We still need a unit test case like described here: &lt;a href=&quot;http://www.doctrine-project.org/documentation/manual/1_2/en/unit-testing&quot; class=&quot;external-link&quot;&gt;http://www.doctrine-project.org/documentation/manual/1_2/en/unit-testing&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we can run it with all the other tests and reproduce the issue in Doctrine by itself. Not in Symfony.&lt;/p&gt;

&lt;p&gt;Thanks, Jon&lt;/p&gt;</comment>
                    <comment id="11988" author="psylosss" created="Tue, 2 Mar 2010 15:13:30 +0000"  >&lt;p&gt;Jon, here is the test for this bug: &lt;a href=&quot;http://gist.github.com/319856&quot; class=&quot;external-link&quot;&gt;http://gist.github.com/319856&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Please, fix it.. my work has been stopped cause of it&lt;/p&gt;</comment>
                    <comment id="12203" author="jaimesuez" created="Mon, 15 Mar 2010 13:12:55 +0000"  >&lt;p&gt;Yes... please fix it... I&apos;m also stuck in my work since a lot of time that the bug it&apos;s open.&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;</comment>
                    <comment id="12212" author="lilawolf" created="Mon, 15 Mar 2010 14:24:37 +0000"  >&lt;p&gt;I&apos;m affected with this bug as well, fortunately, I found a way to get over it, it&apos;s ugly and innefficient, but at least my work isn&apos;t stopped due to this bug. I&apos;ll try to explain what I did commenting here later. Anyway, I really need this bug fixed too before I can start betatesting my app.&lt;br/&gt;
Thanks!&lt;/p&gt;

&lt;p&gt;P.D: I&apos;m using Doctrine 1.2.1.&lt;/p&gt;</comment>
                    <comment id="12215" author="jwage" created="Mon, 15 Mar 2010 14:35:09 +0000"  >&lt;p&gt;I am trying to understand the issue but it just doesn&apos;t make much sense to me yet. The test case is wrong because you are dealing with instances of objects that have previously loaded references, then you try and re-fetch the same object instance. If you do $user1-&amp;gt;free(true); then re-fetch the object the test passes as expected. So, I don&apos;t really have a proper failing test case still that actually exposes the problem. I&apos;ll keep playing around see if I can understand. let me know if anyone else has more information or a patch to test.&lt;/p&gt;

&lt;p&gt;Thanks, Jon&lt;/p&gt;</comment>
                    <comment id="12296" author="p16" created="Tue, 16 Mar 2010 17:22:33 +0000"  >&lt;p&gt;Hi Jonathan,&lt;br/&gt;
This is the &quot;translated&quot; version of my unit test for symfony in &quot;doctrine unit test&quot;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://github.com/ideato/phpcollab3/blob/phpcollabsf13/test/doctrine_unit_test/DC329TestCase.php&quot; class=&quot;external-link&quot;&gt;http://github.com/ideato/phpcollab3/blob/phpcollabsf13/test/doctrine_unit_test/DC329TestCase.php&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The first test is to show the error &quot;SQLSTATE&lt;span class=&quot;error&quot;&gt;&amp;#91;23000&amp;#93;&lt;/span&gt;: Integrity constraint violation: 19 columns issue1, issue2 are not unique&quot;.&lt;br/&gt;
The second one is to show the fact that the relation are saved with wrong data.&lt;/p&gt;

&lt;p&gt;Sorry for the late translation.&lt;/p&gt;

&lt;p&gt;Filippo &lt;/p&gt;</comment>
                    <comment id="12299" author="hckurniawan" created="Tue, 16 Mar 2010 21:55:53 +0000"  >&lt;p&gt;Hi Jonathan,&lt;/p&gt;

&lt;p&gt;It seems that the problem is caused by Doctrine_Collection::add() method line 456 (I could be totally wrong).&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;&lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (isset($&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;referenceField)) {
    $value = $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;reference-&amp;gt;get($&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;relation-&amp;gt;getLocalFieldName());
    &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; ($value !== &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;) {
        $record-&amp;gt;set($&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;referenceField, $value, &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;);
    } &lt;span class=&quot;code-keyword&quot;&gt;else&lt;/span&gt; {
        $record-&amp;gt;set($&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;referenceField, $&lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;-&amp;gt;reference, &lt;span class=&quot;code-keyword&quot;&gt;false&lt;/span&gt;);
    }
...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;What is trying to do is to set the reference field value to the reference value that it&apos;s linked to.&lt;/p&gt;

&lt;p&gt;This only happens when you try to fetch record from the &quot;children&quot;.&lt;/p&gt;

&lt;p&gt;Consider the following:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;Employees:
  tableName: employees
  columns:
    id:
      type: integer(4)
      primary: &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;
      autoincrement: &lt;span class=&quot;code-keyword&quot;&gt;true&lt;/span&gt;
    name:
      type: string(100)
  relations:
    managing:
      class: Employees
      type: many
      local: manager_id
      foreign: employee_id
      foreignAlias: managedBy
      refClass: EmployeeManager

EmployeeManager:
...
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Code:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;&lt;span class=&quot;code-comment&quot;&gt;// ----- The following will not give you any issues
&lt;/span&gt;  $manager = Doctrine::getTable(&apos;Issue&apos;)-&amp;gt;findOneBy(&apos;id&apos;, &apos;1&apos;); &lt;span class=&quot;code-comment&quot;&gt;// This is a manager
&lt;/span&gt;  foreach ($manager-&amp;gt;managing as $employee) {
    ....
  }

  &lt;span class=&quot;code-comment&quot;&gt;// This will not save anything
&lt;/span&gt;  $manager-&amp;gt;save();
&lt;span class=&quot;code-comment&quot;&gt;// -----
&lt;/span&gt;
&lt;span class=&quot;code-comment&quot;&gt;// ----- The following will
&lt;/span&gt;  $employee = Doctrine::getTable(&apos;Issue&apos;)-&amp;gt;findOneBy(&apos;id&apos;, &apos;2&apos;); &lt;span class=&quot;code-comment&quot;&gt;// This is an employee
&lt;/span&gt;  foreach ($employee-&amp;gt;managedBy as $manager) {
    ...
  }

  &lt;span class=&quot;code-comment&quot;&gt;// This will save the wrong data to the &lt;span class=&quot;code-quote&quot;&gt;&quot;EmployeeManager&quot;&lt;/span&gt; table
&lt;/span&gt;  &lt;span class=&quot;code-comment&quot;&gt;// because the code from Doctrine_Collection is overwriting &lt;span class=&quot;code-quote&quot;&gt;&quot;EmployeeManager&quot;&lt;/span&gt; records
&lt;/span&gt;  &lt;span class=&quot;code-comment&quot;&gt;// When they were being added to the collection by the Hydrator.
&lt;/span&gt;  $employee-&amp;gt;save();
&lt;span class=&quot;code-comment&quot;&gt;// -----&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;


&lt;p&gt;Debug backtrace when this happens:&lt;/p&gt;
&lt;div class=&quot;panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;panelContent&quot;&gt;
&lt;p&gt;string(100) &quot;File: /Data/app/onlinevw-drupalvividwireless/libs/external-doctrine1/Doctrine/Record.php @ line 1432&quot;&lt;br/&gt;
string(103) &quot;File: /Data/app/onlinevw-drupalvividwireless/libs/external-doctrine1/Doctrine/Collection.php @ line 461&quot;&lt;br/&gt;
string(99) &quot;File: /Data/app/onlinevw-drupalvividwireless/libs/external-doctrine1/Doctrine/Access.php @ line 131&quot;&lt;br/&gt;
string(107) &quot;File: /Data/app/onlinevw-drupalvividwireless/libs/external-doctrine1/Doctrine/Hydrator/Graph.php @ line 229&quot;&lt;br/&gt;
string(101) &quot;File: /Data/app/onlinevw-drupalvividwireless/libs/external-doctrine1/Doctrine/Hydrator.php @ line 137&quot;&lt;br/&gt;
string(108) &quot;File: /Data/app/onlinevw-drupalvividwireless/libs/external-doctrine1/Doctrine/Query/Abstract.php @ line 1036&quot;&lt;br/&gt;
string(105) &quot;File: /Data/app/onlinevw-drupalvividwireless/libs/external-doctrine1/Doctrine/Relation/Nest.php @ line 84&quot;&lt;br/&gt;
string(100) &quot;File: /Data/app/onlinevw-drupalvividwireless/libs/external-doctrine1/Doctrine/Record.php @ line 1362&quot;&lt;br/&gt;
string(100) &quot;File: /Data/app/onlinevw-drupalvividwireless/libs/external-doctrine1/Doctrine/Record.php @ line 1333&quot;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;</comment>
                    <comment id="12372" author="loops" created="Fri, 19 Mar 2010 12:33:35 +0000"  >&lt;p&gt;Hi all,&lt;/p&gt;

&lt;p&gt;For people who are looking for a workaround, I&apos;ve found one that work for me.&lt;/p&gt;

&lt;p&gt;Get the doctrine extension h2aEqualable (h2aEqualable.zip), register it as a doctrine extension (see &lt;a href=&quot;http://www.doctrine-project.org/documentation/manual/1_2/0_11/extensions&quot; class=&quot;external-link&quot;&gt;http://www.doctrine-project.org/documentation/manual/1_2/0_11/extensions&lt;/a&gt;) and make your refClass of every equal nest relation acting as h2aEqualable.&lt;/p&gt;

&lt;p&gt;In your PHP script :&lt;br/&gt;
{{&lt;br/&gt;
Doctrine::setExtensionsPath( &apos;path/to/unzip/place&apos; );&lt;br/&gt;
Doctrine_Manager::getInstance()-&amp;gt;registerExtension( &apos;h2aEqualable&apos; );&lt;br/&gt;
}}&lt;/p&gt;

&lt;p&gt;In your YAML schema :&lt;br/&gt;
{{&lt;br/&gt;
MyEqualNestRelationRefClassModel:&lt;br/&gt;
  actAs:&lt;br/&gt;
    h2aEqualable:&lt;br/&gt;
      fields: &lt;span class=&quot;error&quot;&gt;&amp;#91;id_1,id_2&amp;#93;&lt;/span&gt;&lt;br/&gt;
}}&lt;/p&gt;

&lt;p&gt;As I&apos;ve said before, it works for me, so let me know if it solve your issues too...&lt;/p&gt;</comment>
                    <comment id="13365" author="pgueguin" created="Fri, 18 Jun 2010 12:57:55 +0000"  >&lt;p&gt;I have the very same issue with non equal nest relations.&lt;br/&gt;
It is stopping my project&lt;/p&gt;

&lt;p&gt;SQLSTATE&lt;span class=&quot;error&quot;&gt;&amp;#91;23000&amp;#93;&lt;/span&gt;: Integrity constraint violation: 1062 Duplicate entry &apos;87-87&apos; for key &apos;PRIMARY&apos;&lt;/p&gt;

&lt;p&gt;execute : UPDATE cop_job_stream_successor SET job_stream_destination_id = ?, updated_at = ? WHERE job_stream_source_id = ? AND job_stream_destination_id = ? - (87, 2010-06-18 18:55:32, 87, 94) &lt;/p&gt;

&lt;p&gt;CopJobStream:&lt;br/&gt;
  columns:&lt;br/&gt;
    name:&lt;br/&gt;
      type: string(255)&lt;br/&gt;
      notnull: false&lt;br/&gt;
....&lt;br/&gt;
  relations:&lt;br/&gt;
   SuccessorJobStreams:&lt;br/&gt;
     class: CopJobStream&lt;br/&gt;
     local: job_stream_source_id&lt;br/&gt;
     foreign: job_stream_destination_id    &lt;br/&gt;
     refClass: CopJobStreamSuccessor&lt;br/&gt;
     foreignAlias: PredecessorJobStreams&lt;br/&gt;
     onDelete: CASCADE &lt;br/&gt;
     onUpdate: CASCADE &lt;/p&gt;

&lt;p&gt;CopJobStreamSuccessor:&lt;br/&gt;
  columns:&lt;br/&gt;
   job_stream_source_id:&lt;br/&gt;
     type: integer&lt;br/&gt;
     primary: true&lt;br/&gt;
   job_stream_destination_id:&lt;br/&gt;
     type: integer&lt;br/&gt;
     primary: true&lt;br/&gt;
  relations:&lt;br/&gt;
    CopJobStream:&lt;br/&gt;
      local: job_stream_source_id&lt;br/&gt;
      foreignAlias: CopJobStreamSuccessors&lt;br/&gt;
      onDelete: CASCADE&lt;br/&gt;
      onUpdate: CASCADE    &lt;/p&gt;</comment>
                    <comment id="13367" author="pgueguin" created="Fri, 18 Jun 2010 14:20:28 +0000"  >&lt;p&gt;It works anyway with above   h2aEqualable extension&lt;/p&gt;</comment>
                    <comment id="15186" author="bigbadbassman" created="Wed, 26 Jan 2011 02:39:36 +0000"  >&lt;p&gt;after stumbling into the same pit as everyone, i created a fresh report as &lt;a href=&quot;http://www.doctrine-project.org/jira/browse/DC-958&quot; title=&quot;updating Models with Intra-Table Relations cascades strangely&quot;&gt;DC-958&lt;/a&gt;. Later I found out that it has been reported before, so please mark &lt;a href=&quot;http://www.doctrine-project.org/jira/browse/DC-958&quot; title=&quot;updating Models with Intra-Table Relations cascades strangely&quot;&gt;DC-958&lt;/a&gt; as duplicate of this. (or at least related, as I was using a Non-Equal Nested Set) also &lt;a href=&quot;http://www.doctrine-project.org/jira/browse/DC-952&quot; title=&quot;Non-Equal Nest Relations Not Working - from &amp;quot;Children&amp;quot; side&quot;&gt;DC-952&lt;/a&gt; refers to the same problem, but also with Non-Equal nestet sets.&lt;/p&gt;

&lt;p&gt;My Case:  Non-Equal-Nested-Set. Problems occur on saving Objects for 2nd or more time. Doctrine deletes all Child-Relations of the Object to be saved and updates Relations of the Childs to other Objects (other parents of the children objects) with references to the child itself!&lt;/p&gt;

&lt;p&gt;the proposed h2aEqualable extension does prevent the wrong update statements but not the initial delete of the child-relations.&lt;/p&gt;

&lt;p&gt;What exactly is missing on this bug to be fixed? It is now a year old, and clearly preventing people from using Self-Referencing relations with doctrine.&lt;/p&gt;

&lt;p&gt;How can we help? More sample data, schema definitions, test cases?&lt;/p&gt;</comment>
                    <comment id="15309" author="flevour" created="Tue, 15 Feb 2011 06:41:46 +0000"  >&lt;p&gt;Here is a better and simpler test case for the equal relation: &lt;a href=&quot;https://gist.github.com/827414&quot; class=&quot;external-link&quot;&gt;https://gist.github.com/827414&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is clearly a memory problem here. I&apos;ll leave it up to Jonathan to decide whether it&apos;s a scenario which can be avoided in Doctrine itself or must be handled by Symfony (&lt;a href=&quot;http://trac.symfony-project.org/ticket/9398&quot; class=&quot;external-link&quot;&gt;http://trac.symfony-project.org/ticket/9398&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;In the Symfony context calls to refresh() might not be an option when modifying an object (aka saving a form).&lt;/p&gt;</comment>
                    <comment id="15333" author="yitznewton" created="Thu, 17 Feb 2011 12:06:55 +0000"  >&lt;p&gt;h2aEqualable seems to work for me.&lt;/p&gt;</comment>
                    <comment id="15898" author="pavel.campr" created="Thu, 2 Jun 2011 07:48:44 +0000"  >&lt;p&gt;h2aEqualable works only partly for me (same as Daniel Reiche wrote).&lt;/p&gt;

&lt;p&gt;I tried to identify the problem. &lt;/p&gt;

&lt;p&gt;My usecase was: &lt;br/&gt;
1) I have an Article record in $article&lt;br/&gt;
2) I called $article-&amp;gt;RelatedArticles-&amp;gt;getPrimaryKeys() , where RelatedArticles is a name of my self reference&lt;br/&gt;
3) $article-&amp;gt;save();&lt;/p&gt;

&lt;p&gt;The problem originates from step 2), during hydratation process for related articles, which are added to a collection of related articles, in Collection-&amp;gt;add() method (line 465) here:&lt;/p&gt;

&lt;p&gt;            if ($value !== null) &lt;/p&gt;
{
                $record-&amp;gt;set($this-&amp;gt;referenceField, $value, false);
            }
&lt;p&gt; else {&lt;/p&gt;

&lt;p&gt;but, $this-&amp;gt;referenceField contains wrong name of reference field. Self referenced model (Article) has two relations to the same class (one from &quot;owning&quot; side, second from &quot;referencing&quot; side). $this-&amp;gt;referenceField in the collection is somewhere filled with the wrong relation name (not the&quot;referencing&quot; one, but the &quot;owning&quot; one). &lt;/p&gt;

&lt;p&gt;When I save the $article, all referenced records are saved too and this is the problem, why the Doctrine tries to save corrupted data:&lt;/p&gt;

&lt;p&gt;In my example, I have this data:&lt;/p&gt;

&lt;p&gt;in Doctrine_Collection-&amp;gt;add on line 457: $record) is a RelatedArticle (&lt;br/&gt;
    article1 = string(1) &quot;4&quot;&lt;br/&gt;
    article2 = string(1) &quot;9&quot;&lt;br/&gt;
)&lt;br/&gt;
in Doctrine_Collection-&amp;gt;add on line 458: $this-&amp;gt;referenceField) = string(19) &quot;article1&quot;&lt;br/&gt;
in Doctrine_Collection-&amp;gt;add on line 459: $value) = string(1) &quot;9&quot;   &lt;/p&gt;

&lt;p&gt;BUT expected data is:&lt;/p&gt;

&lt;p&gt;in Doctrine_Collection-&amp;gt;add on line 458: $this-&amp;gt;referenceField) = string(19) &quot;article2&quot;&lt;/p&gt;


&lt;p&gt;This wrong behavior modified my RelatedArticle into this: RelatedArticle (&lt;br/&gt;
    article1 = string(1) &quot;9&quot;&lt;br/&gt;
    article2 = string(1) &quot;9&quot;&lt;br/&gt;
)&lt;/p&gt;


&lt;p&gt;I have no idea how to fix it, but maybe someone can, I hope &lt;img class=&quot;emoticon&quot; src=&quot;http://www.doctrine-project.org/jira/images/icons/emoticons/smile.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/p&gt;

&lt;p&gt;(&lt;br/&gt;
my schema is:&lt;/p&gt;

&lt;p&gt;Article&lt;br/&gt;
  relations:&lt;br/&gt;
    RelatedArticles:&lt;br/&gt;
      class: Article&lt;br/&gt;
      local: article1&lt;br/&gt;
      foreign: article2&lt;br/&gt;
      refClass: RelatedArticle&lt;br/&gt;
)&lt;/p&gt;

&lt;p&gt;Maybe, when &quot;refClassRelationAlias&quot; option was invented to specifically point to a relation, instead of using &quot;refClass&quot;, which can be used more times for one record and thus is not unambiguous, something for self referenced relations should be added as well. My &quot;refClass: RelatedArticle&quot; creates (probably) a relation from the foreign side too and Article contains two relations, which uses same refClass. Doctrine then doesn&apos;t know, which one should be used. &lt;/p&gt;
</comment>
                    <comment id="15901" author="pavel.campr" created="Fri, 3 Jun 2011 13:14:55 +0000"  >&lt;p&gt;&lt;b&gt;Non-equal&lt;/b&gt; nest relations work properly, when &lt;b&gt;refClassRelationAlias&lt;/b&gt; undocumented option is used, e.g.&lt;/p&gt;


&lt;p&gt;Article:&lt;br/&gt;
  ...&lt;br/&gt;
  relations:&lt;br/&gt;
    RelatedArticles:&lt;br/&gt;
      class: Article&lt;br/&gt;
      local: article1&lt;br/&gt;
      foreign: article2&lt;br/&gt;
      refClass: RelatedArticle&lt;br/&gt;
      refClassRelationAlias: RelatedArticleAlias&lt;/p&gt;

&lt;p&gt;Anything can be used as a value for refClassRelationAlias.&lt;/p&gt;

&lt;p&gt;Unfortunately, &lt;b&gt;this doesn&apos;t fix equal nest relations&lt;/b&gt;.&lt;/p&gt;</comment>
                </comments>
                    <attachments>
                    <attachment id="10505" name="h2aEqualable.zip" size="3041" author="loops" created="Fri, 19 Mar 2010 12:33:52 +0000" />
                    <attachment id="10216" name="saving process.png" size="64255" author="jaimesuez" created="Mon, 7 Dec 2009 00:38:52 +0000" />
                    <attachment id="10260" name="schema.yml" size="443" author="p16" created="Sat, 26 Dec 2009 15:09:43 +0000" />
                    <attachment id="10261" name="testEqualNestRelationsTest.php" size="3598" author="p16" created="Sat, 26 Dec 2009 15:09:43 +0000" />
                    <attachment id="10262" name="testNestedEqualRelationWithObjectsTest.php" size="3391" author="p16" created="Sat, 26 Dec 2009 15:09:43 +0000" />
                </attachments>
            <subtasks>
        </subtasks>
        </item>
</channel>
</rss>