Details

    • Type: Bug Bug
    • Status: Reopened
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.2.0-ALPHA1
    • Fix Version/s: None
    • Component/s: Extensions
    • Labels:
      None
    • Environment:
      PHP 5.2.8, Doctrine 1.2.0 Alpha1, Vista, Sandbox 1.2.0 Alpha1

      Description

      After enabling Taggable extension, magic methods on the tables (e.g. getPopularTags)
      cannot be reached:

      Doctrine::getTable('Upload')->getPopularTags();

      Fatal error: Uncaught exception 'Doctrine_Table_Exception' with message 'Unknown method Doctrine_Table::getPopularTags' in C:\Users\user\www\extens.dev\lib\Doctrine\Table.php:2608 Stack trace: #0 [internal function]: Doctrine_Table->__call('getPopularTags', Array) #1 C:\Users\user\www\extens.dev\index.php(7): Doctrine_Table->getPopularTags() #2

      {main}

      thrown in C:\Users\user\www\extens.dev\lib\Doctrine\Table.php on line 2608

        Activity

        admirau created issue -
        Hide
        admirau added a comment -

        The same with Alpha2

        Show
        admirau added a comment - The same with Alpha2
        Hide
        admirau added a comment -

        Running the tests results in one failure:

        Doctrine Unit Tests
        ===================
        Doctrine_Template_Taggable_TestCase.............................................failed

        Unexpected Doctrine_Connection_Sqlite_Exception thrown in [Doctrine_Template_Taggable_TestCase] with message [SQLSTATE[HY000]: General error: 1 no such column: a__2] in C:\Users\user\www\extens.dev\lib\Doctrine\Connection.php on line 1067

        Trace
        -------------

        #0 C:\Users\user\www\extens.dev\lib\Doctrine\Connection.php(1015): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Sqlite))
        #1 C:\Users\user\www\extens.dev\lib\Doctrine\Query\Abstract.php(936): Doctrine_Connection->execute('SELECT t.id AS ...', Array)
        #2 C:\Users\user\www\extens.dev\lib\Doctrine\Query\Abstract.php(990): Doctrine_Query_Abstract->_execute(Array)
        #3 C:\Users\user\www\extens.dev\tools\sandbox\extensions\Taggable\lib\Doctrine\Template\TaggableTag.php(76): Doctrine_Query_Abstract->execute(Array, 2)
        #4 [internal function]: Doctrine_Template_TaggableTag->getPopularTagsTableProxy(Array)
        #5 C:\Users\user\www\extens.dev\lib\Doctrine\Record.php(2569): call_user_func_array(Array, Array)
        #6 [internal function]: Doctrine_Record->__call('getPopularTagsT...', Array)
        #7 [internal function]: TaggableTag->getPopularTagsTableProxy(Array)
        #8 C:\Users\user\www\extens.dev\lib\Doctrine\Table.php(2605): call_user_func_array(Array, Array)
        #9 [internal function]: Doctrine_Table->__call('getPopularTags', Array)
        #10 C:\Users\user\www\extens.dev\tools\sandbox\extensions\Taggable\tests\Template\TaggableTestCase.php(216): Doctrine_Table->getPopularTags(Array)
        #11 C:\Users\user\www\extens.dev\tests\DoctrineTest\UnitTestCase.php(144): Doctrine_Template_Taggable_TestCase->testGetPopularTags()
        #12 C:\Users\user\www\extens.dev\tests\DoctrineTest\GroupTest.php(61): UnitTestCase->run()
        #13 C:\Users\user\www\extens.dev\tests\DoctrineTest.php(180): GroupTest->run(Object(DoctrineTest_Reporter_Cli), '')
        #14 C:\Users\user\www\extens.dev\tools\sandbox\extensions\Taggable\tests\run.php(29): DoctrineTest->run()
        #15

        {main}

        Tested: 1 test cases.
        Successes: 26 passes.
        Failures: 1 fails.
        Number of new Failures: 0
        Number of fixed Failures: 0

        Tests ran in 1 seconds and used 15279.15625 KB of memory

        Show
        admirau added a comment - Running the tests results in one failure: Doctrine Unit Tests =================== Doctrine_Template_Taggable_TestCase.............................................failed Unexpected Doctrine_Connection_Sqlite_Exception thrown in [Doctrine_Template_Taggable_TestCase] with message [SQLSTATE [HY000] : General error: 1 no such column: a__2] in C:\Users\user\www\extens.dev\lib\Doctrine\Connection.php on line 1067 Trace ------------- #0 C:\Users\user\www\extens.dev\lib\Doctrine\Connection.php(1015): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Sqlite)) #1 C:\Users\user\www\extens.dev\lib\Doctrine\Query\Abstract.php(936): Doctrine_Connection->execute('SELECT t.id AS ...', Array) #2 C:\Users\user\www\extens.dev\lib\Doctrine\Query\Abstract.php(990): Doctrine_Query_Abstract->_execute(Array) #3 C:\Users\user\www\extens.dev\tools\sandbox\extensions\Taggable\lib\Doctrine\Template\TaggableTag.php(76): Doctrine_Query_Abstract->execute(Array, 2) #4 [internal function] : Doctrine_Template_TaggableTag->getPopularTagsTableProxy(Array) #5 C:\Users\user\www\extens.dev\lib\Doctrine\Record.php(2569): call_user_func_array(Array, Array) #6 [internal function] : Doctrine_Record->__call('getPopularTagsT...', Array) #7 [internal function] : TaggableTag->getPopularTagsTableProxy(Array) #8 C:\Users\user\www\extens.dev\lib\Doctrine\Table.php(2605): call_user_func_array(Array, Array) #9 [internal function] : Doctrine_Table->__call('getPopularTags', Array) #10 C:\Users\user\www\extens.dev\tools\sandbox\extensions\Taggable\tests\Template\TaggableTestCase.php(216): Doctrine_Table->getPopularTags(Array) #11 C:\Users\user\www\extens.dev\tests\DoctrineTest\UnitTestCase.php(144): Doctrine_Template_Taggable_TestCase->testGetPopularTags() #12 C:\Users\user\www\extens.dev\tests\DoctrineTest\GroupTest.php(61): UnitTestCase->run() #13 C:\Users\user\www\extens.dev\tests\DoctrineTest.php(180): GroupTest->run(Object(DoctrineTest_Reporter_Cli), '') #14 C:\Users\user\www\extens.dev\tools\sandbox\extensions\Taggable\tests\run.php(29): DoctrineTest->run() #15 {main} Tested: 1 test cases. Successes: 26 passes. Failures: 1 fails. Number of new Failures: 0 Number of fixed Failures: 0 Tests ran in 1 seconds and used 15279.15625 KB of memory
        Hide
        Jonathan H. Wage added a comment -
        Show
        Jonathan H. Wage added a comment - The tests all pass now. http://www.doctrine-project.org/extension/Taggable/1_2-1_0/tests
        Jonathan H. Wage made changes -
        Field Original Value New Value
        Status Open [ 1 ] Closed [ 6 ]
        Fix Version/s 1.2.0-BETA2 [ 10037 ]
        Resolution Fixed [ 1 ]
        Hide
        admirau added a comment -

        It still does not work on my environment (Windows or Ubuntu 9.10, PHP 5.3/5.2.6)
        The test result is a bit different, but still fails:

        Doctrine Unit Tests
        ===================
        Doctrine_Template_Taggable_TestCase.............................................failed

        Unexpected Doctrine_Record_UnknownPropertyException thrown in [Doctrine_Template_Taggable_TestCase] with message [Unknown record property / related component "total_num" on "TaggableTag"] in /home/user/doctrine12b/lib/Doctrine/Record/Filter/Standard.php on line 55

        Trace
        -------------

        #0 /home/taat/doctrine12b/lib/Doctrine/Record.php(1359): Doctrine_Record_Filter_Standard->filterGet(Object(TaggableTag), 'total_num')
        #1 /home/taat/doctrine12b/lib/Doctrine/Record.php(1318): Doctrine_Record->_get('total_num', true)
        #2 /home/taat/doctrine12b/lib/Doctrine/Access.php(117): Doctrine_Record->get('total_num')
        #3 /home/taat/doctrine12b/tools/sandbox/extensions/Taggable/tests/Template/TaggableTestCase.php(217): Doctrine_Access->offsetGet('total_num')
        #4 /home/taat/doctrine12b/tests/DoctrineTest/UnitTestCase.php(144): Doctrine_Template_Taggable_TestCase->testGetPopularTags()
        #5 /home/taat/doctrine12b/tests/DoctrineTest/GroupTest.php(61): UnitTestCase->run()
        #6 /home/taat/doctrine12b/tests/DoctrineTest.php(180): GroupTest->run(Object(DoctrineTest_Reporter_Cli), '')
        #7 /home/taat/doctrine12b/tools/sandbox/extensions/Taggable/tests/run.php(29): DoctrineTest->run()
        #8

        {main}

        Tested: 1 test cases.
        Successes: 26 passes.
        Failures: 1 fails.
        Number of new Failures: 0
        Number of fixed Failures: 0

        Show
        admirau added a comment - It still does not work on my environment (Windows or Ubuntu 9.10, PHP 5.3/5.2.6) The test result is a bit different, but still fails: Doctrine Unit Tests =================== Doctrine_Template_Taggable_TestCase.............................................failed Unexpected Doctrine_Record_UnknownPropertyException thrown in [Doctrine_Template_Taggable_TestCase] with message [Unknown record property / related component "total_num" on "TaggableTag"] in /home/user/doctrine12b/lib/Doctrine/Record/Filter/Standard.php on line 55 Trace ------------- #0 /home/taat/doctrine12b/lib/Doctrine/Record.php(1359): Doctrine_Record_Filter_Standard->filterGet(Object(TaggableTag), 'total_num') #1 /home/taat/doctrine12b/lib/Doctrine/Record.php(1318): Doctrine_Record->_get('total_num', true) #2 /home/taat/doctrine12b/lib/Doctrine/Access.php(117): Doctrine_Record->get('total_num') #3 /home/taat/doctrine12b/tools/sandbox/extensions/Taggable/tests/Template/TaggableTestCase.php(217): Doctrine_Access->offsetGet('total_num') #4 /home/taat/doctrine12b/tests/DoctrineTest/UnitTestCase.php(144): Doctrine_Template_Taggable_TestCase->testGetPopularTags() #5 /home/taat/doctrine12b/tests/DoctrineTest/GroupTest.php(61): UnitTestCase->run() #6 /home/taat/doctrine12b/tests/DoctrineTest.php(180): GroupTest->run(Object(DoctrineTest_Reporter_Cli), '') #7 /home/taat/doctrine12b/tools/sandbox/extensions/Taggable/tests/run.php(29): DoctrineTest->run() #8 {main} Tested: 1 test cases. Successes: 26 passes. Failures: 1 fails. Number of new Failures: 0 Number of fixed Failures: 0
        admirau made changes -
        Resolution Fixed [ 1 ]
        Status Closed [ 6 ] Reopened [ 4 ]
        Hide
        Jonathan H. Wage added a comment -

        Did you update Doctrine? I fixed something in Doctrine 1.2 that fixes it.

        Show
        Jonathan H. Wage added a comment - Did you update Doctrine? I fixed something in Doctrine 1.2 that fixes it.
        Hide
        admirau added a comment -

        Yes, the results above ("total_num") I get after updating to 1.2.0-BETA1.
        At 1.2.0-ALPHA2 it was "no such column: a__2" (see above comments).

        Do the extensions work with 2.0, or they are 1.2 specific?

        Show
        admirau added a comment - Yes, the results above ("total_num") I get after updating to 1.2.0-BETA1. At 1.2.0-ALPHA2 it was "no such column: a__2" (see above comments). Do the extensions work with 2.0, or they are 1.2 specific?
        Hide
        Jonathan H. Wage added a comment -

        1.2 specific. I don't get any fails now, can you try and troubleshoot it and figure out why it fails for you? They don't fail for me anywhere.

        Show
        Jonathan H. Wage added a comment - 1.2 specific. I don't get any fails now, can you try and troubleshoot it and figure out why it fails for you? They don't fail for me anywhere.
        Hide
        admirau added a comment -

        Doctrine_Template_Taggable_TestCase::testGetPopularTags()
        line 214:
        $test = Doctrine::getTable('TaggableTag')->getPopularTags(array('ArticleTaggableTest', 'ArticleTaggableTest2'));

        // compare this with your results
        echo serialize($test);
        result:
        C:19:"Doctrine_Collection":169:{a:7:{s:4:"data";a:0:{}s:6:"_table";s:11:"TaggableTag";s:9:"_snapshot";a:0:{}s:14:"referenceField";N;s:9:"keyColumn";s:4:"name";s:8:"_locator";N;s:10:"_resources";a:0:{}}}

        When I try to var_dump($test),
        I get circular dependency.
        I tried to save results of var_dump($test) to disk, by I get 1,5GB file, and still growing...

        Maybe this article helps somehow:
        http://www.bigroom.co.uk/blog/php-nesting-level-too-deep-recursive-dependency

        Can I see the fix you mentioned above?

        I'm sorry, but I do not know what else I can do.
        Any ideas?

        Show
        admirau added a comment - Doctrine_Template_Taggable_TestCase::testGetPopularTags() line 214: $test = Doctrine::getTable('TaggableTag')->getPopularTags(array('ArticleTaggableTest', 'ArticleTaggableTest2')); // compare this with your results echo serialize($test); result: C:19:"Doctrine_Collection":169:{a:7:{s:4:"data";a:0:{}s:6:"_table";s:11:"TaggableTag";s:9:"_snapshot";a:0:{}s:14:"referenceField";N;s:9:"keyColumn";s:4:"name";s:8:"_locator";N;s:10:"_resources";a:0:{}}} When I try to var_dump($test), I get circular dependency. I tried to save results of var_dump($test) to disk, by I get 1,5GB file, and still growing... Maybe this article helps somehow: http://www.bigroom.co.uk/blog/php-nesting-level-too-deep-recursive-dependency Can I see the fix you mentioned above? I'm sorry, but I do not know what else I can do. Any ideas?
        Hide
        Jonathan H. Wage added a comment -

        I am not sure what to say since it is working for me on all the machines I test. I'll be happy to look if I can get something to fail so I can troubleshoot it.

        Show
        Jonathan H. Wage added a comment - I am not sure what to say since it is working for me on all the machines I test. I'll be happy to look if I can get something to fail so I can troubleshoot it.
        Jonathan H. Wage made changes -
        Status Reopened [ 4 ] Closed [ 6 ]
        Fix Version/s 1.2.0-BETA2 [ 10037 ]
        Resolution Cannot Reproduce [ 5 ]
        Hide
        admirau added a comment -

        I've tested on PLD Linux too.
        The same thing.

        Could you provide sample server/php configuration on which the tests are passing?

        Can you describe the fix you've made to correct the errors with ''Unknown method Doctrine_Table::getPopularTags'.
        Maybe I can manage to investigate it, but I do not know where to start.

        Show
        admirau added a comment - I've tested on PLD Linux too. The same thing. Could you provide sample server/php configuration on which the tests are passing? Can you describe the fix you've made to correct the errors with ''Unknown method Doctrine_Table::getPopularTags'. Maybe I can manage to investigate it, but I do not know where to start.
        Hide
        admirau added a comment -

        Sorry for reopening this again.

        After upgrading to BETA2 all Taggable tests are passing OK for me too.

        However, in the code I still get 'Unknown method BlogPostTable::getPopularTags' in /tools\sandbox\lib\Doctrine\Table.php:2793'
        Isn't it a regression of the bug you've already fixed before ALPHA2?

        Here is the description of how I came to this exception.

        At the very end of config.php:

        $manager->registerExtension('Taggable');

        In the index.php:

        <?php

        require_once('config.php');

        $models = Doctrine_Core::loadModels('models');

        $post = new BlogPost();
        $post->title = 'This is a sample blog post';
        $post->description = 'Cool!';
        $post->setTags('2009, symfony, doctrine');
        $post->save();

        $table = Doctrine::getTable('BlogPost');
        echo get_class($table); // echoes Doctrine_Collection
        $table->getPopularTags(); // this throws the exception

        Then in the console:
        php doctrine.php create-db
        php doctrine.php generate-models-yaml (BaseBlogPost, BlogPost, BlogPostTable were generated)
        php doctrine.php generate-sql (see SQL below)
        php doctrine.php create-tables
        (all ok)

        php index.php

        result:

        BlogPostTablePHP Fatal error: Uncaught exception 'Doctrine_Table_Exception' with message 'Unknown method BlogPostTable::getPopularTags' in C:\Users\user\www\extens.dev\tools\sandbox\lib\Doctrine\Table.php:2793
        Stack trace:
        #0 [internal function]: Doctrine_Table->__call('getPopularTags', Array)
        #1 C:\Users\user\www\extens.dev\tools\sandbox\index.php(15): BlogPostTable->getPopularTags()
        #2

        {main}
        thrown in C:\Users\user\www\extens.dev\tools\sandbox\lib\Doctrine\Table.php on line 2793
        Fatal error: Uncaught exception 'Doctrine_Table_Exception' with message 'Unknown method BlogPostTable::getPopularTags' in C:\Users\user\www\extens.dev\tools\sandbox\lib\Doctrine\Table.php:2793
        Stack trace:
        #0 [internal function]: Doctrine_Table->__call('getPopularTags', Array)
        #1 C:\Users\user\www\extens.dev\tools\sandbox\index.php(15): BlogPostTable->getPopularTags()
        #2 {main}

        thrown in C:\Users\user\www\extens.dev\tools\sandbox\lib\Doctrine\Table.php on line 2793

        And here is the generated SQL:

        CREATE TABLE taggable_tag (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255) UNIQUE);
        CREATE TABLE blog_post_taggable_tag (id INTEGER, tag_id INTEGER, PRIMARY KEY(id, tag_id));
        CREATE TABLE blog_post (id INTEGER PRIMARY KEY AUTOINCREMENT, title VARCHAR(255) NOT NULL, description VARCHAR(255) NOT NULL);

        Show
        admirau added a comment - Sorry for reopening this again. After upgrading to BETA2 all Taggable tests are passing OK for me too. However, in the code I still get 'Unknown method BlogPostTable::getPopularTags' in /tools\sandbox\lib\Doctrine\Table.php:2793' Isn't it a regression of the bug you've already fixed before ALPHA2? Here is the description of how I came to this exception. At the very end of config.php: $manager->registerExtension('Taggable'); In the index.php: <?php require_once('config.php'); $models = Doctrine_Core::loadModels('models'); $post = new BlogPost(); $post->title = 'This is a sample blog post'; $post->description = 'Cool!'; $post->setTags('2009, symfony, doctrine'); $post->save(); $table = Doctrine::getTable('BlogPost'); echo get_class($table); // echoes Doctrine_Collection $table->getPopularTags(); // this throws the exception Then in the console: php doctrine.php create-db php doctrine.php generate-models-yaml (BaseBlogPost, BlogPost, BlogPostTable were generated) php doctrine.php generate-sql (see SQL below) php doctrine.php create-tables (all ok) php index.php result: BlogPostTablePHP Fatal error: Uncaught exception 'Doctrine_Table_Exception' with message 'Unknown method BlogPostTable::getPopularTags' in C:\Users\user\www\extens.dev\tools\sandbox\lib\Doctrine\Table.php:2793 Stack trace: #0 [internal function] : Doctrine_Table->__call('getPopularTags', Array) #1 C:\Users\user\www\extens.dev\tools\sandbox\index.php(15): BlogPostTable->getPopularTags() #2 {main} thrown in C:\Users\user\www\extens.dev\tools\sandbox\lib\Doctrine\Table.php on line 2793 Fatal error: Uncaught exception 'Doctrine_Table_Exception' with message 'Unknown method BlogPostTable::getPopularTags' in C:\Users\user\www\extens.dev\tools\sandbox\lib\Doctrine\Table.php:2793 Stack trace: #0 [internal function] : Doctrine_Table->__call('getPopularTags', Array) #1 C:\Users\user\www\extens.dev\tools\sandbox\index.php(15): BlogPostTable->getPopularTags() #2 {main} thrown in C:\Users\user\www\extens.dev\tools\sandbox\lib\Doctrine\Table.php on line 2793 And here is the generated SQL: CREATE TABLE taggable_tag (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(255) UNIQUE); CREATE TABLE blog_post_taggable_tag (id INTEGER, tag_id INTEGER, PRIMARY KEY(id, tag_id)); CREATE TABLE blog_post (id INTEGER PRIMARY KEY AUTOINCREMENT, title VARCHAR(255) NOT NULL, description VARCHAR(255) NOT NULL);
        admirau made changes -
        Resolution Cannot Reproduce [ 5 ]
        Status Closed [ 6 ] Reopened [ 4 ]
        Hide
        Jonathan H. Wage added a comment -

        When I test your code, it is working for me. You sure you don't have some old versions of PHP or something?

        Show
        Jonathan H. Wage added a comment - When I test your code, it is working for me. You sure you don't have some old versions of PHP or something?
        Hide
        admirau added a comment -

        Everything is up to date.
        Tested on different servers, with different operating systems, different versions PHP, different versions of Doctrine, by different people.

        Common thing for all these machines is that PHP (>5.2.10 <= 5.3.1) was installed from precompiled builds, not from source.

        The error I get now is the same error I got earlier (at the beginning of this topic), which disapperared after your fix.
        Then appeared the second error, which was fixed in BETA2, but the previous error is back. (strange, but the tests are passing now, despite the errors in the regular code).

        When I find some spare time I'll try to trace the changes you've made since the beginning of the topic.

        Show
        admirau added a comment - Everything is up to date. Tested on different servers, with different operating systems, different versions PHP, different versions of Doctrine, by different people. Common thing for all these machines is that PHP (>5.2.10 <= 5.3.1) was installed from precompiled builds, not from source. The error I get now is the same error I got earlier (at the beginning of this topic), which disapperared after your fix. Then appeared the second error, which was fixed in BETA2, but the previous error is back. (strange, but the tests are passing now, despite the errors in the regular code). When I find some spare time I'll try to trace the changes you've made since the beginning of the topic.
        Hide
        admirau added a comment -

        Maybe the models are generated not properly.
        Here are my models (three) for the reproduction procedure (above):

        class BlogPostTable extends Doctrine_Table {}

        class BlogPost extends BaseBlogPost {}

        abstract class BaseBlogPost extends Doctrine_Record
        {
        public function setTableDefinition()

        { $this->setTableName('blog_post'); $this->hasColumn('title', 'string', 255, array( 'type' => 'string', 'notnull' => true, 'length' => '255', )); $this->hasColumn('description', 'string', 255, array( 'type' => 'string', 'notnull' => true, 'length' => '255', )); }

        public function setUp()

        { parent::setUp(); $taggable0 = new Doctrine_Template_Taggable(); $this->actAs($taggable0); }

        }

        Show
        admirau added a comment - Maybe the models are generated not properly. Here are my models (three) for the reproduction procedure (above): class BlogPostTable extends Doctrine_Table {} class BlogPost extends BaseBlogPost {} abstract class BaseBlogPost extends Doctrine_Record { public function setTableDefinition() { $this->setTableName('blog_post'); $this->hasColumn('title', 'string', 255, array( 'type' => 'string', 'notnull' => true, 'length' => '255', )); $this->hasColumn('description', 'string', 255, array( 'type' => 'string', 'notnull' => true, 'length' => '255', )); } public function setUp() { parent::setUp(); $taggable0 = new Doctrine_Template_Taggable(); $this->actAs($taggable0); } }
        Hide
        Jonathan H. Wage added a comment -

        I have everything generated the same as you.

        Show
        Jonathan H. Wage added a comment - I have everything generated the same as you.
        Hide
        Benjamin Arthur Lupton added a comment -

        Also getting this. Using doctrine 1.2.0-beta3 and also tried with latest SVN. Taggable is latest available.

        PHP 5.3.0 running on Zend Server version 5.0.0Beta2

        Show
        Benjamin Arthur Lupton added a comment - Also getting this. Using doctrine 1.2.0-beta3 and also tried with latest SVN. Taggable is latest available. PHP 5.3.0 running on Zend Server version 5.0.0Beta2
        Hide
        admirau added a comment -

        No changes after upgrade to 1.2.0-RC1.

        Show
        admirau added a comment - No changes after upgrade to 1.2.0-RC1.
        Hide
        admirau added a comment -

        Maybe this helps somehow:

        // Following line throws:
        // Doctrine_Table_Exception: Unknown method Doctrine_Table::getPopularTags in /home/user/doctrine12rc1/lib/Doctrine/Table.php on line 2799
        $tags = Doctrine::getTable('BlogPost')->getPopularTags();

        // This line returns collection of tags, as expected
        $tags = Doctrine::getTable('TaggableTag')->getPopularTags('BlogPost');

        $rel = Doctrine::getTable('BlogPost')->getRelations(); // is int(2)
        $rel = Doctrine::getTable('TagableTag')->getRelations(); // is int(2)

        Show
        admirau added a comment - Maybe this helps somehow: // Following line throws: // Doctrine_Table_Exception: Unknown method Doctrine_Table::getPopularTags in /home/user/doctrine12rc1/lib/Doctrine/Table.php on line 2799 $tags = Doctrine::getTable('BlogPost')->getPopularTags(); // This line returns collection of tags, as expected $tags = Doctrine::getTable('TaggableTag')->getPopularTags('BlogPost'); $rel = Doctrine::getTable('BlogPost')->getRelations(); // is int(2) $rel = Doctrine::getTable('TagableTag')->getRelations(); // is int(2)
        Hide
        Brian Smith added a comment - - edited

        Symfony 1.3 SVN updated as of this post.

        Ubuntu Karmic with PHP 5.3.1

        I have installed Taggable in mysymfonyproject/lib/doctrine_extensions/Taggable

        I have two example tables defined with Taggable:

        Video:
        actAs:

        { Taggable: ~, Timestampable: ~ }

        columns:
        id:

        { type: integer, primary: true, autoincrement: true }

        content_id:

        { type: integer, notnull: true }

        title:

        { type: string(255) }

        description:

        { type: clob }

        relations:
        Content:

        { local: content_id, foreign: id }

        Photo:
        actAs:

        { Taggable: ~, Timestampable: ~ }

        columns:
        id:

        { type: integer, primary: true, autoincrement: true }

        content_id:

        { type: integer, notnull: true }

        title:

        { type: string(255) }

        description:

        { type: clob }

        uri:

        { type: string(255) }

        relations:
        Content:

        { local: content_id, foreign: id }

        The following code functions and populates the database:
        $video = new Video();
        ...
        $video->setTags(implode(", ", $tags));
        $video->save();

        The following code errors:
        $tags = Doctrine::getTable('Video')->getPopularTags();

        500 | Internal Server Error | Doctrine_Table_Exception
        Unknown method VideoTable::getPopularTags

        The following code errors:
        $tags = Doctrine::getTable('TaggableTag')->getPopularTags('Video');

        500 | Internal Server Error | Doctrine_Exception
        Couldn't find class TagableTag

        Show
        Brian Smith added a comment - - edited Symfony 1.3 SVN updated as of this post. Ubuntu Karmic with PHP 5.3.1 I have installed Taggable in mysymfonyproject/lib/doctrine_extensions/Taggable I have two example tables defined with Taggable: Video: actAs: { Taggable: ~, Timestampable: ~ } columns: id: { type: integer, primary: true, autoincrement: true } content_id: { type: integer, notnull: true } title: { type: string(255) } description: { type: clob } relations: Content: { local: content_id, foreign: id } Photo: actAs: { Taggable: ~, Timestampable: ~ } columns: id: { type: integer, primary: true, autoincrement: true } content_id: { type: integer, notnull: true } title: { type: string(255) } description: { type: clob } uri: { type: string(255) } relations: Content: { local: content_id, foreign: id } The following code functions and populates the database: $video = new Video(); ... $video->setTags(implode(", ", $tags)); $video->save(); The following code errors: $tags = Doctrine::getTable('Video')->getPopularTags(); 500 | Internal Server Error | Doctrine_Table_Exception Unknown method VideoTable::getPopularTags The following code errors: $tags = Doctrine::getTable('TaggableTag')->getPopularTags('Video'); 500 | Internal Server Error | Doctrine_Exception Couldn't find class TagableTag
        Hide
        Sorin Neacsu added a comment -

        Dont know if its related to this issue or not, but for some reason Doctrine::getTable('TaggableTag') throws a "

        {Doctrine_Exception}

        Couldn't find class TaggableTag" exception

        I understand that you would normally do this:
        Doctrine::getTable('Video')->getTags()
        but I just want plain access to the TaggableTag model and Doctrine doesnt seem to generate any model classess for TaggableTag

        Show
        Sorin Neacsu added a comment - Dont know if its related to this issue or not, but for some reason Doctrine::getTable('TaggableTag') throws a " {Doctrine_Exception} Couldn't find class TaggableTag" exception I understand that you would normally do this: Doctrine::getTable('Video')->getTags() but I just want plain access to the TaggableTag model and Doctrine doesnt seem to generate any model classess for TaggableTag
        Hide
        Jonathan H. Wage added a comment -

        I have tested everything everyone has provided and it is all working for me. The only thing I can suggest now is that someone creates a Doctrine failing test case so that I can run it to see the failure.

        Show
        Jonathan H. Wage added a comment - I have tested everything everyone has provided and it is all working for me. The only thing I can suggest now is that someone creates a Doctrine failing test case so that I can run it to see the failure.
        Hide
        Benjamin Arthur Lupton added a comment -

        Will create a test case this weekend for this and a few other problems I've across (with fixes). Nothing more frustrating than not being able to reproduce a problem, so I feel your pain.

        Show
        Benjamin Arthur Lupton added a comment - Will create a test case this weekend for this and a few other problems I've across (with fixes). Nothing more frustrating than not being able to reproduce a problem, so I feel your pain.
        Hide
        Ivar Nesje added a comment - - edited

        I think this bug i related to the bug in the documentation http://www.doctrine-project.org/jira/browse/DC-378 to get the popular tags you will first have to load the models you want the tags for.

        // load models that you want the tags from
        Doctrine::getTable('blog');
        Doctrine::getTable('products');
        // then you can get the tags for the models currently loaded
        $tags = Doctrine::getTable('TaggableTag')->getPopularTags();
        
        Show
        Ivar Nesje added a comment - - edited I think this bug i related to the bug in the documentation http://www.doctrine-project.org/jira/browse/DC-378 to get the popular tags you will first have to load the models you want the tags for. // load models that you want the tags from Doctrine::getTable('blog'); Doctrine::getTable('products'); // then you can get the tags for the models currently loaded $tags = Doctrine::getTable('TaggableTag')->getPopularTags();
        Hide
        Brian Smith added a comment -

        This works for me:

        // load models that you want the tags from
        Doctrine::getTable('blog');
        Doctrine::getTable('products');
        // then you can get the tags for the models currently loaded
        $tags = Doctrine::getTable('TaggableTag')->getPopularTags();

        Show
        Brian Smith added a comment - This works for me: // load models that you want the tags from Doctrine::getTable('blog'); Doctrine::getTable('products'); // then you can get the tags for the models currently loaded $tags = Doctrine::getTable('TaggableTag')->getPopularTags();
        Hide
        Benjamin Arthur Lupton added a comment -

        Okie... Creating test cases for this turned out to be more complicated than I can handle - myself not being that familiar with phpunit.
        Although within the test it is written as:
        $test = Doctrine::getTable('TaggableTag')->getPopularTags(array('ArticleTaggableTest', 'ArticleTaggableTest2'));
        Rather than:
        $test = Doctrine::getTable('ArticleTaggableTest')->getPopularTags();
        which is what this problem is about.

        Although I do believe I've nailed the source of the problem - as well as others I've experienced.

        Having either of the above causes the system to fall down. I've applied a bunch of fixes/changes to taggable to ensure it works with my systems, such as http://sos.7dots.co.uk/ (still in staging) which uses all of the above mentioned problems, not sure how to do a diff but here is the file:
        http://www.2shared.com/file/12385197/c5911e42/Taggable.html

        Hope that helps some people. Any changes I've made code can come under the same licence as doctrine, so no worries there.

        Show
        Benjamin Arthur Lupton added a comment - Okie... Creating test cases for this turned out to be more complicated than I can handle - myself not being that familiar with phpunit. Although within the test it is written as: $test = Doctrine::getTable('TaggableTag')->getPopularTags(array('ArticleTaggableTest', 'ArticleTaggableTest2')); Rather than: $test = Doctrine::getTable('ArticleTaggableTest')->getPopularTags(); which is what this problem is about. Although I do believe I've nailed the source of the problem - as well as others I've experienced. Problems are introduced when using pear style model names. Indirectly fixed with: http://pastebin.com/DKGcgAht - links to fix in Doctrine/Record/Generator.php Problems are introduced when using custom names for the taggable field. Such as: http://pastebin.com/JdhqeG38 - example Problems are introduced when using inheritance for models. Such as: http://pastebin.com/Qwuwk0z1 - example Problems are introduced when using taggable relations when the record has not been inserted yet. Such as: http://pastebin.com/ahPpqTdK - example Having either of the above causes the system to fall down. I've applied a bunch of fixes/changes to taggable to ensure it works with my systems, such as http://sos.7dots.co.uk/ (still in staging) which uses all of the above mentioned problems, not sure how to do a diff but here is the file: http://www.2shared.com/file/12385197/c5911e42/Taggable.html Hope that helps some people. Any changes I've made code can come under the same licence as doctrine, so no worries there.
        Hide
        admirau added a comment - - edited

        With 1.2.2 there is some progress.
        There was still 1 test failing (CASCADE),
        but with the version:
        http://www.2shared.com/file/12385197/c5911e42/Taggable.html
        provided by Benjamin Arthur Lupton
        all test are passing now.

        But now when I run:
        getTable('ArticleTaggableTest')->getPopularTags();
        I get: ERROR: column "i2__1" does not exist

        The failing query on PostgreSql is:

        SELECT t.id AS t_id, t.name AS tname, COUNT(DISTINCT i.id) AS i_0,
        (COUNT(DISTINCT i.id)) AS i__1
        FROM taggable_tag t
        LEFT JOIN cms_model_image_taggable_tag c ON (t.id = c.tag_id)
        LEFT JOIN image i ON i.id = c.id
        WHERE t.id IN
        (SELECT doctrine_subquery_alias.id
        FROM
        (SELECT DISTINCT t2.id, (COUNT(DISTINCT i2.id)) AS i2__1
        FROM taggable_tag t2
        LEFT JOIN cms_model_image_taggable_tag c2 ON (t2.id = c2.tag_id)
        LEFT JOIN image i2 ON i2.id = c2.id
        GROUP BY t2.id HAVING i2__1 > 0
        ORDER BY i2__1 DESC LIMIT 10) AS doctrine_subquery_alias)
        GROUP BY t.id HAVING i__1 > 0
        ORDER BY i__1 DESC

        Seems that this just a PostgreSql issue.
        On Mysql it runs just fine.

        Show
        admirau added a comment - - edited With 1.2.2 there is some progress. There was still 1 test failing (CASCADE), but with the version: http://www.2shared.com/file/12385197/c5911e42/Taggable.html provided by Benjamin Arthur Lupton all test are passing now. But now when I run: getTable('ArticleTaggableTest')->getPopularTags(); I get: ERROR: column "i2__1" does not exist The failing query on PostgreSql is: SELECT t.id AS t_ id, t.name AS t name, COUNT(DISTINCT i.id) AS i _0, (COUNT(DISTINCT i.id)) AS i__1 FROM taggable_tag t LEFT JOIN cms_ model _image_taggable_tag c ON (t.id = c.tag_id) LEFT JOIN image i ON i.id = c.id WHERE t.id IN (SELECT doctrine_subquery_alias.id FROM (SELECT DISTINCT t2.id, (COUNT(DISTINCT i2.id)) AS i2__1 FROM taggable_tag t2 LEFT JOIN cms_ model _image_taggable_tag c2 ON (t2.id = c2.tag_id) LEFT JOIN image i2 ON i2.id = c2.id GROUP BY t2.id HAVING i2__1 > 0 ORDER BY i2__1 DESC LIMIT 10) AS doctrine_subquery_alias) GROUP BY t.id HAVING i__1 > 0 ORDER BY i__1 DESC Seems that this just a PostgreSql issue. On Mysql it runs just fine.
        Hide
        Ivar Nesje added a comment -

        The last comment is concerning how the poular tags are found and rated (on PostgreSql). I think this is unrelated to the rest of this issue and should be moved to a separate issue. (also I only got junk ads when I tried to get the file you are linking to).

        Show
        Ivar Nesje added a comment - The last comment is concerning how the poular tags are found and rated (on PostgreSql). I think this is unrelated to the rest of this issue and should be moved to a separate issue. (also I only got junk ads when I tried to get the file you are linking to).
        Hide
        admirau added a comment - - edited

        I have created separated issue for this:
        http://www.doctrine-project.org/jira/browse/DC-634

        And yes, this link is quite odd...
        There is a lot of crap,
        however there is a small link, to download improved code:

        Look for: "Save file to your PC: click here"

        Show
        admirau added a comment - - edited I have created separated issue for this: http://www.doctrine-project.org/jira/browse/DC-634 And yes, this link is quite odd... There is a lot of crap, however there is a small link, to download improved code: Look for: "Save file to your PC: click here"

        This list may be incomplete, as errors occurred whilst retrieving source from linked applications:

        • Request to http://www.doctrine-project.org/fisheye/ failed: Error in remote call to 'FishEye 0 (http://www.doctrine-project.org/fisheye/)' (http://www.doctrine-project.org/fisheye) [AbstractRestCommand{path='/rest-service-fe/search-v1/crossRepositoryQuery', params={query=DC-67, expand=changesets[0:20].revisions[0:29],reviews}, methodType=GET}] : Received status code 503 (Service Temporarily Unavailable)

          People

          • Assignee:
            Jonathan H. Wage
            Reporter:
            admirau
          • Votes:
            4 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated: