问题迭代PersistentCollection

问题描述:

我是新来的学说,我有一个问题迭代一个PersistentCollection,我已经设置了一个多对多关系的一些基本实体:问题迭代PersistentCollection

class File { 

    /** 
     * @ManyToMany(targetEntity="Row", mappedBy="file") 
     **/ 
    protected $rows; 

    public function __construct() 
    { 
     $this->rows = new ArrayCollection(); 
    } 

    public function getRows() 
    { 
     return $this->rows; //this seems to return a persistantCollection 
    } 
} 

class Row { 

    /** 
    * @ManyToOne(targetEntity="File", inversedBy="rows") 
    **/ 
    protected $file; 
} 

错误日志报告以下,但我无法理解报道的内容。

[02-May-2013 09:07:29 UTC] PHP Notice: Undefined index: id in /Applications/MAMP/htdocs/NiCE/datatable.php on line 9 

[02-May-2013 09:07:29 UTC] PHP Notice: Undefined index: joinTable in /Applications/MAMP/htdocs/NiCE/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultQuoteStrategy.php on line 90 

[02-May-2013 09:07:29 UTC] PHP Notice: Undefined index: joinTable in /Applications/MAMP/htdocs/NiCE/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 969 

[02-May-2013 09:07:29 UTC] PHP Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/NiCE/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 969 

[02-May-2013 09:07:29 UTC] PHP Notice: Undefined index: joinTable in /Applications/MAMP/htdocs/NiCE/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/DefaultQuoteStrategy.php on line 90 

[02-May-2013 09:07:29 UTC] PHP Notice: Undefined index: joinTable in /Applications/MAMP/htdocs/NiCE/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 1249 

[02-May-2013 09:07:29 UTC] PHP Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/NiCE/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 1251 

[02-May-2013 09:07:29 UTC] PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON' at line 1' in /Applications/MAMP/htdocs/NiCE/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php:646 

Stack trace: 

#0 /Applications/MAMP/htdocs/NiCE/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php(646): PDO->query('SELECT t0.id AS...') 

#1 /Applications/MAMP/htdocs/NiCE/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php(997): Doctrine\DBAL\Connection->executeQuery('SELECT t0.id AS...', Array, Array) 

#2 /Applications/MAMP/htdocs/NiCE/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php(928): Doctrine\ORM\Persisters\BasicEntityPersister->getManyToManyStatement(Array, Object(File)) 

#3 /Applications/MAMP/htdocs/NiCE/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(2694): Doctrine\ORM\Persisters\BasicEntityPersister->loadMany in /Applications/MAMP/htdocs/NiCE/vendor/doctrine/dbal/lib/Doctrine/DBAL/DBALException.php on line 47 
+0

而我在我的方法中做的是$ file-> getRows(); foreach($ rows AS $ row)...所以没有代表我的语法错误。 – 2013-05-02 09:28:55

问题是我的关系混淆了,File.rows是OneToMany,而Row.file是ManyToOne。