DDC-1705: BasicEntityPersister throws error undefined index #2146

Closed
opened 2026-01-22 13:42:41 +01:00 by admin · 3 comments
Owner

Originally created by @doctrinebot on GitHub (Mar 15, 2012).

Originally assigned to: @beberlei on GitHub.

Jira issue originally created by user vigor_bg:

In the BasicEntityPersister in the _getInsertSQL function when you are foreaching the columns you make a check

if (isset($this->_columnTypes[$column]) &&
                        isset($this->*class->fieldMappings[$this->*class->fieldNames[$column]]['requireSQLConversion'])) {
                        $type = Type::getType($this->_columnTypes[$column]);
                        $placeholder = $type->convertToDatabaseValueSQL('?', $this->_platform);
                    }

the problem is in

  isset($this->*class->fieldMappings[$this->*class->fieldNames[$column]]['requireSQLConversion'])

because you are not checking if it is set

$this->_class->fieldNames[$column]

i got that problem when was saving ManyToOne association

Originally created by @doctrinebot on GitHub (Mar 15, 2012). Originally assigned to: @beberlei on GitHub. Jira issue originally created by user vigor_bg: In the BasicEntityPersister in the _getInsertSQL function when you are foreaching the columns you make a check ``` if (isset($this->_columnTypes[$column]) && isset($this->*class->fieldMappings[$this->*class->fieldNames[$column]]['requireSQLConversion'])) { $type = Type::getType($this->_columnTypes[$column]); $placeholder = $type->convertToDatabaseValueSQL('?', $this->_platform); } ``` the problem is in ``` isset($this->*class->fieldMappings[$this->*class->fieldNames[$column]]['requireSQLConversion']) ``` because you are not checking if it is set ``` $this->_class->fieldNames[$column] ``` i got that problem when was saving ManyToOne association
admin added the Bug label 2026-01-22 13:42:41 +01:00
admin closed this issue 2026-01-22 13:42:41 +01:00
Author
Owner

@doctrinebot commented on GitHub (Mar 19, 2012):

Comment created by schwede:

I got the same error and used error handling to throw an exception of this notice:

PHP Fatal error: Uncaught exception 'ErrorException' with message 'Undefined index: currentPrice_id' in /usr/share/php/Doctrine/ORM/Persisters/BasicEntityPersister.php:1146
Stack trace:
#0 /usr/share/php/Doctrine/ORM/Persisters/BasicEntityPersister.php(1146): exception_error_handler(8, 'Undefined index...', '/usr/share/php/...', 1146, Array)
#1 /usr/share/php/Doctrine/ORM/Persisters/BasicEntityPersister.php(225): Doctrine\ORM\Persisters\BasicEntityPersister->_getInsertSQL()
#2 /usr/share/php/Doctrine/ORM/UnitOfWork.php(896): Doctrine\ORM\Persisters\BasicEntityPersister->executeInserts()
#3 /usr/share/php/Doctrine/ORM/UnitOfWork.php(304): Doctrine\ORM\UnitOfWork->executeInserts(Object(Doctrine\ORM\Mapping\ClassMetadata))
#4 /usr/share/php/Doctrine/ORM/EntityManager.php(355): Doctrine\ORM\UnitOfWork->commit(NULL)
#5 /var/www/app/module/Application/src/Application/Entity/Model.php(29): Doctrine\ORM\EntityManager->flush()
#6 /var/www/app/module/Application/src/Application/Entity/ in /usr/share/php/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 1146

My mappings look like this:

/****
 * 
 * @ORM\OneToMany(targetEntity="Price", mappedBy="product", cascade={"all"})
 * @ORM\OrderBy({"date" = "DESC"})
 */
protected $prices;

/****
 * @ORM\ManyToOne(targetEntity="Price", inversedBy="currentProducts",cascade={"all"})
 */
protected $currentPrice;
@doctrinebot commented on GitHub (Mar 19, 2012): Comment created by schwede: I got the same error and used error handling to throw an exception of this notice: # PHP Fatal error: Uncaught exception 'ErrorException' with message 'Undefined index: currentPrice_id' in /usr/share/php/Doctrine/ORM/Persisters/BasicEntityPersister.php:1146 Stack trace: #0 /usr/share/php/Doctrine/ORM/Persisters/BasicEntityPersister.php(1146): exception_error_handler(8, 'Undefined index...', '/usr/share/php/...', 1146, Array) #1 /usr/share/php/Doctrine/ORM/Persisters/BasicEntityPersister.php(225): Doctrine\ORM\Persisters\BasicEntityPersister->_getInsertSQL() #2 /usr/share/php/Doctrine/ORM/UnitOfWork.php(896): Doctrine\ORM\Persisters\BasicEntityPersister->executeInserts() #3 /usr/share/php/Doctrine/ORM/UnitOfWork.php(304): Doctrine\ORM\UnitOfWork->executeInserts(Object(Doctrine\ORM\Mapping\ClassMetadata)) #4 /usr/share/php/Doctrine/ORM/EntityManager.php(355): Doctrine\ORM\UnitOfWork->commit(NULL) #5 /var/www/app/module/Application/src/Application/Entity/Model.php(29): Doctrine\ORM\EntityManager->flush() #6 /var/www/app/module/Application/src/Application/Entity/ in /usr/share/php/Doctrine/ORM/Persisters/BasicEntityPersister.php on line 1146 # My mappings look like this: ``` /**** * * @ORM\OneToMany(targetEntity="Price", mappedBy="product", cascade={"all"}) * @ORM\OrderBy({"date" = "DESC"}) */ protected $prices; /**** * @ORM\ManyToOne(targetEntity="Price", inversedBy="currentProducts",cascade={"all"}) */ protected $currentPrice; ```
Author
Owner

@doctrinebot commented on GitHub (Apr 1, 2012):

Comment created by @beberlei:

Fixed

@doctrinebot commented on GitHub (Apr 1, 2012): Comment created by @beberlei: Fixed
Author
Owner

@doctrinebot commented on GitHub (Apr 1, 2012):

Issue was closed with resolution "Fixed"

@doctrinebot commented on GitHub (Apr 1, 2012): Issue was closed with resolution "Fixed"
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: doctrine/archived-orm#2146