<!-- 
RSS generated by JIRA (5.2.7#850-sha1:b2af0c8dc8537b36121c6a579fabbdf79fc919e5) at Sun May 26 02:07:04 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-344/DC-344.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-344] Trouble with auto including generate Base class with specifik name</title>
                <link>http://www.doctrine-project.org/jira/browse/DC-344</link>
                <project id="10031" key="DC">Doctrine 1</project>
                        <description>&lt;p&gt;I have found a problem during testing example model on page &lt;a href=&quot;http://www.doctrine-project.org/documentation/cookbook/1_1/en/code-igniter-and-doctrine&quot; class=&quot;external-link&quot;&gt;http://www.doctrine-project.org/documentation/cookbook/1_1/en/code-igniter-and-doctrine&lt;/a&gt; . A use YAML model with object name UserGroup and call method Doctrine_Core::createTablesFromModels(&apos;models&apos;); process faling with error:&lt;/p&gt;

&lt;p&gt;Fatal error: Class &apos;BaseUserGroup&apos; not found in /sourcepath/models/UserGroup.php on line 13&lt;/p&gt;

&lt;p&gt;Generate model file included abstract class BaseUserGroup exist and is OK. If I include BaseUserGroup manuly or rename object &quot;UserGroup&quot; on &quot;UserGroups&quot; everithing work fine. I thing here is a problem with autoloding base class with specifik name.&lt;/p&gt;

&lt;p&gt;Here is my code example:&lt;/p&gt;

&lt;p&gt;Doctrine_Core::dropDatabases();&lt;br/&gt;
Doctrine_Core::createDatabases();&lt;br/&gt;
Doctrine_Core::generateModelsFromYaml(&apos;sourcepath/yaml/model.yml&apos;, &apos;models&apos;);&lt;br/&gt;
Doctrine_Core::createTablesFromModels(&apos;models&apos;);&lt;/p&gt;


&lt;p&gt;Trouble shotting YAML model is:&lt;br/&gt;
&amp;#8212;&lt;br/&gt;
UserGroup:&lt;br/&gt;
  columns:&lt;br/&gt;
    user_id:&lt;br/&gt;
      type: integer(4)&lt;br/&gt;
      primary: true&lt;br/&gt;
    group_id:&lt;br/&gt;
      type: integer(4)&lt;br/&gt;
      primary: true&lt;/p&gt;</description>
                <environment>Linux, Ubuntu 9.04 64b</environment>
            <key id="10591">DC-344</key>
            <summary>Trouble with auto including generate Base class with specifik name</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="beberlei">Benjamin Eberlei</assignee>
                                <reporter username="havelkaondrej">Havelka Ondrej</reporter>
                        <labels>
                    </labels>
                <created>Wed, 9 Dec 2009 09:20:54 +0000</created>
                <updated>Sun, 21 Mar 2010 00:34:59 +0000</updated>
                                    <version>1.2.1</version>
                                                        <due></due>
                    <votes>3</votes>
                        <watches>1</watches>
                        <comments>
                    <comment id="11298" author="silent_hill_dev" created="Sat, 26 Dec 2009 19:40:52 +0000"  >&lt;p&gt;Same problem here following the same example of the 1.2 tutorial.&lt;/p&gt;</comment>
                    <comment id="11634" author="m.olszewski" created="Mon, 8 Feb 2010 19:14:40 +0000"  >&lt;p&gt;Hi,&lt;/p&gt;

&lt;p&gt;I&apos;ve stumbled upon the same problem and I think I know where the issue is.&lt;/p&gt;

&lt;p&gt;So Doctrine_Core::createTablesFromModels() calls Doctrine_Export::exportSchema() which in turn calls Doctrine_Core::loadModels().&lt;/p&gt;

&lt;p&gt;Doctrine_Core::loadModels() uses RecursiveIteratorIterator and iterates over all found files.&lt;/p&gt;

&lt;p&gt;Now I think the order of files returned by RecursiveIteratorIterator is not always the same (depends on OS, filenames and cosmic radiation &lt;img class=&quot;emoticon&quot; src=&quot;http://www.doctrine-project.org/jira/images/icons/emoticons/wink.gif&quot; height=&quot;20&quot; width=&quot;20&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt; ), but the most important thing here is that class files from &apos;modules/generated&apos; directory (as in examples) ARE NOT included before subclasses derived from generated classes. This means that Doctrine_Core::autoload() fails to load classes from &apos;modules/generated&apos; directory, exactly this check fails:&lt;/p&gt;

&lt;p&gt;if (0 !== stripos($className, &apos;Doctrine_&apos;) || class_exists($className, false) || interface_exists($className, false))&lt;/p&gt;

&lt;p&gt;as base class is not starting with &apos;Doctrine_&apos; and is not yet loaded.&lt;/p&gt;

&lt;p&gt;To fix it properly the algorithm for loading modules must be changed to first include &apos;modules/generated&apos; classes and then rest of classes. I am not sure but maybe Core::autoload() might be changed to include base classes properly.&lt;/p&gt;


&lt;p&gt;QUICK WORKAROUND:&lt;br/&gt;
As a quick workaround I&apos;ve changed parameters in call to createTablesFromModels() to:&lt;/p&gt;

&lt;p&gt;Doctrine_Core::createTablesFromModels(array(&apos;models/generated&apos;,&apos;models&apos;));&lt;/p&gt;

&lt;p&gt;as createTablesFromModels() can accept array of directories.&lt;/p&gt;


&lt;p&gt;Hope this helps you, please let me know if you need any more information. Thanks!&lt;/p&gt;</comment>
                    <comment id="11635" author="sacho" created="Tue, 9 Feb 2010 01:38:32 +0000"  >&lt;p&gt;You are missing the model autoloader(&lt;a href=&quot;http://www.doctrine-project.org/upgrade/1_2#Models%20Autoloading&quot; class=&quot;external-link&quot;&gt;http://www.doctrine-project.org/upgrade/1_2#Models%20Autoloading&lt;/a&gt;), which was added in 1.2&lt;/p&gt;

&lt;p&gt;That should fix the problem with conservative autoloading.&lt;/p&gt;</comment>
                    <comment id="11637" author="m.olszewski" created="Tue, 9 Feb 2010 11:54:06 +0000"  >&lt;p&gt;I&apos;ve tried registering modelsAutoload() and it works superb in this case for both aggressive and conservative loading.&lt;/p&gt;

&lt;p&gt;It is a shame that it is not mentioned in 1.2 PDF I&apos;ve got - it&apos;d make life easier for some people &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;Thanks for your help.&lt;/p&gt;</comment>
                    <comment id="12418" author="cublt" created="Sun, 21 Mar 2010 00:34:59 +0000"  >&lt;p&gt;i am a new user to doctrine and i hit this brick wall. this bug report was all that saved me, and it is a bit misleading. my test results are below. in the end i found a combination that worked, but this seems like a glaring bug especially since the pdf takes the user right down a path that fails completely in all cases (default aggressive loading, doesn&apos;t work for me at all).&lt;/p&gt;

&lt;p&gt;i am using a pear loaded version 1.2 on ubuntu&lt;/p&gt;

&lt;p&gt;here are my test results:&lt;br/&gt;
---------------------------------------------------------------------------------------------------&lt;br/&gt;
case 1: load models right after generating them, without modelsAutoLoad() call: SUCCESS/FAIL varies&lt;br/&gt;
---------------------------------------------------------------------------------------------------&lt;br/&gt;
in doctrine_bootstrap.php file: &lt;br/&gt;
&amp;lt;?&lt;br/&gt;
require_once(&apos;lib/vendor/doctrine/Doctrine.php&apos;);&lt;br/&gt;
spl_autoload_register(array(&apos;Doctrine&apos;, &apos;autoload&apos;));&lt;br/&gt;
$manager = Doctrine_Manager::getInstance();&lt;br/&gt;
$conn = Doctrine_Manager::connection(&apos;mysql:// DSN REMOVED &apos;,&apos;doctrine&apos;);&lt;/p&gt;

&lt;p&gt;in test.php:&lt;br/&gt;
&amp;lt;?&lt;br/&gt;
require_once(&apos;doctrine_bootstrap.php&apos;);&lt;br/&gt;
Doctrine_Core::generateModelsFromDb(&apos;models&apos;, array(&apos;doctrine&apos;), array(&apos;generateTableClasses&apos; =&amp;gt; true));&lt;br/&gt;
Doctrine_Core::loadModels(&apos;models&apos;);&lt;/p&gt;



&lt;p&gt;---------------------------------------------------------------------------------------------------&lt;br/&gt;
case 2: load models after they have already been generated, without modelsAutoLoad() call: FAIL&lt;br/&gt;
---------------------------------------------------------------------------------------------------&lt;br/&gt;
in doctrine_bootstrap.php file: &lt;br/&gt;
&amp;lt;?&lt;br/&gt;
require_once(&apos;lib/vendor/doctrine/Doctrine.php&apos;);&lt;br/&gt;
spl_autoload_register(array(&apos;Doctrine&apos;, &apos;autoload&apos;));&lt;br/&gt;
$manager = Doctrine_Manager::getInstance();&lt;br/&gt;
$conn = Doctrine_Manager::connection(&apos;mysql:// DSN REMOVED &apos;,&apos;doctrine&apos;);&lt;/p&gt;

&lt;p&gt;in test.php:&lt;br/&gt;
&amp;lt;?&lt;br/&gt;
// note: all model classes are in ./models and ./models/generated&lt;br/&gt;
require_once(&apos;doctrine_bootstrap.php&apos;);&lt;br/&gt;
Doctrine_Core::loadModels(&apos;models&apos;);&lt;/p&gt;




&lt;p&gt;---------------------------------------------------------------------------------------------------&lt;br/&gt;
case 3: load models after they have already been generated, with the modelsAutoLoad() call and default aggressive setting: FAIL&lt;br/&gt;
---------------------------------------------------------------------------------------------------&lt;br/&gt;
in doctrine_bootstrap.php file: &lt;br/&gt;
&amp;lt;?&lt;br/&gt;
require_once(&apos;lib/vendor/doctrine/Doctrine.php&apos;);&lt;br/&gt;
spl_autoload_register(array(&apos;Doctrine&apos;, &apos;autoload&apos;));&lt;br/&gt;
$manager = Doctrine_Manager::getInstance();&lt;br/&gt;
$conn = Doctrine_Manager::connection(&apos;mysql:// DSN REMOVED &apos;,&apos;doctrine&apos;);&lt;/p&gt;

&lt;p&gt;spl_autoload_register(array(&apos;Doctrine_Core&apos;, &apos;modelsAutoload&apos;));&lt;/p&gt;

&lt;p&gt;in test.php:&lt;br/&gt;
&amp;lt;?&lt;br/&gt;
// note: all model classes are in ./models and ./models/generated&lt;br/&gt;
require_once(&apos;doctrine_bootstrap.php&apos;);&lt;br/&gt;
Doctrine_Core::loadModels(&apos;models&apos;);&lt;/p&gt;




&lt;p&gt;---------------------------------------------------------------------------------------------------&lt;br/&gt;
case 4: load models after they have already been generated, with the modelsAutoLoad() call and conservative loading: SUCCESS&lt;br/&gt;
---------------------------------------------------------------------------------------------------&lt;br/&gt;
in doctrine_bootstrap.php file: &lt;br/&gt;
&amp;lt;?&lt;br/&gt;
require_once(&apos;lib/vendor/doctrine/Doctrine.php&apos;);&lt;br/&gt;
spl_autoload_register(array(&apos;Doctrine&apos;, &apos;autoload&apos;));&lt;br/&gt;
$manager = Doctrine_Manager::getInstance();&lt;br/&gt;
$conn = Doctrine_Manager::connection(&apos;mysql:// DSN REMOVED &apos;,&apos;doctrine&apos;);&lt;/p&gt;

&lt;p&gt;$manager-&amp;gt;setAttribute(Doctrine_Core::ATTR_MODEL_LOADING, Doctrine_Core::MODEL_LOADING_CONSERVATIVE);&lt;br/&gt;
spl_autoload_register(array(&apos;Doctrine_Core&apos;, &apos;modelsAutoload&apos;));&lt;/p&gt;

&lt;p&gt;in test.php:&lt;br/&gt;
&amp;lt;?&lt;br/&gt;
// note: all model classes are in ./models and ./models/generated&lt;br/&gt;
require_once(&apos;doctrine_bootstrap.php&apos;);&lt;br/&gt;
Doctrine_Core::loadModels(&apos;models&apos;);&lt;/p&gt;

</comment>
                </comments>
                    <attachments>
                </attachments>
            <subtasks>
        </subtasks>
        </item>
</channel>
</rss>