[DDC-2466] [GH-676] Update UnitOfWork.php Created: 22/May/13 Updated: 22/May/13 Resolved: 22/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Marco Pivetta |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of Kynareth62: Url: https://github.com/doctrine/doctrine2/pull/676 Message: Here, if a field (type date or datetime) is defined as id, I have an error because it's an object and not a string... Can you please fix this bug ? Thank you. |
| Comments |
| Comment by Doctrine Bot [ 22/May/13 ] |
|
A related Github Pull-Request [GH-676] was closed: |
| Comment by Marco Pivetta [ 22/May/13 ] |
[DDC-2465] ProxyClass load, and empty ids Created: 21/May/13 Updated: 21/May/13 Resolved: 21/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.4 |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Gabriele Tondi | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Environment: |
Osx |
||
| Description |
|
If you have lazy association (example many-to-one) that have empty id (for empty i mean empty string and not null) you (correctly) get EntityNotFoundException. But i'm working with a system that sometimes put an empty string instead of null in fk fields. So i've add this little snipped of code __load method in $_proxyClassTemplate, ProxyFactory: // GT, 2013-05-21 If all identifier are empty you not need to try load if (is_array($this->_identifier)) { $isEmpty = true; foreach($this->_identifier as $iK => $iV) { if (!empty($iV)) $isEmpty = false; } if ($isEmpty) return; } // END GT EDIT |
| Comments |
| Comment by Marco Pivetta [ 21/May/13 ] |
|
What does `$this->_identifier` contain in your failing case? |
| Comment by Gabriele Tondi [ 21/May/13 ] |
|
It contains for example array( [id] => ); Because on db you find an empty string and not a null value. |
| Comment by Marco Pivetta [ 21/May/13 ] |
|
If I get it correctly, you are using empty strings to emulate NULL references, which is invalid in SQL ( I've explained it extensively at http://stackoverflow.com/questions/15502408/doctrine-2-use-default-0-values-instead-of-null-for-relation/15511715#15511715 ) Is this what you are doing? Because for any identifier that is not NULL an attempt to load it should be run, regardless of its content. |
| Comment by Gabriele Tondi [ 21/May/13 ] |
|
That's not me It's the system by which i'm sharing the db. Are there other (maybe cleaner) ways? Thanks, |
| Comment by Marco Pivetta [ 21/May/13 ] |
|
No, the only correct way to handle this is to set NULL values for the association meta-columns. Marking as invalid |
| Comment by Gabriele Tondi [ 21/May/13 ] |
|
I can't find doc about it: https://doctrine-orm.readthedocs.org/en/latest/reference/annotations-reference.html?highlight=column#annref-column Can you give an example? |
| Comment by Marco Pivetta [ 21/May/13 ] |
|
`$this->someAssociation = NULL;`. That's basically what I mean. |
[DDC-2464] useless index for the middle table of many-to-many relationship Created: 21/May/13 Updated: 21/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | Tools |
| Affects Version/s: | Git Master |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Improvement | Priority: | Minor |
| Reporter: | scourgen | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | ddl, schematool | ||
| Description |
|
I have entity A and B, the relationship between A and B is many-to-many. which means Doctrine2 will generate a middle table called AB for me. entity A:
class Station {
/**
* @ORM\ManyToMany(targetEntity="Fun", mappedBy="stations")
*/
protected $funs;
}
entity B:
class Fun {
/**
* @ORM\ManyToMany(targetEntity="Station", inversedBy="funs")
* @ORM\JoinTable(name="stations_have_funs")
*/
protected $stations;
}
the schema of middle table stations_have_funs: CREATE TABLE `stations_have_funs` ( `fun_id` int(11) NOT NULL, `station_id` int(11) NOT NULL, PRIMARY KEY (`fun_id`,`station_id`), KEY `IDX_45C921911CA4BE49` (`fun_id`), KEY `IDX_45C9219121BDB235` (`station_id`), CONSTRAINT `FK_45C921911CA4BE49` FOREIGN KEY (`fun_id`) REFERENCES `funs` (`id`) ON DELETE CASCADE, CONSTRAINT `FK_45C9219121BDB235` FOREIGN KEY (`station_id`) REFERENCES `stations` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; I noticed that there are 2 useless index(fun_id and station_id). Since fun_id and station_id are the primary key of this table. Do we really need 2 extra/duplicated index ? |
[DDC-2463] [GH-675] Implementation for 'IsNot'-Comparison Created: 20/May/13 Updated: 20/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of pmattmann: Url: https://github.com/doctrine/doctrine2/pull/675 Message: See PR (https://github.com/doctrine/collections/pull/11) This is the required implementation for 'IsNotNull'-Filters in Collection-Filtering. |
[DDC-2462] [GH-674] Shortcut for force Created: 20/May/13 Updated: 20/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of TorbenBr: Url: https://github.com/doctrine/doctrine2/pull/674 Message: |
[DDC-2461] [GH-673] Namespace based command names Created: 17/May/13 Updated: 17/May/13 |
|
| Status: | Reopened |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Marco Pivetta |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of hell0w0rd: Url: https://github.com/doctrine/doctrine2/pull/673 Message: Symfony console supports auto completion: |
| Comments |
| Comment by Doctrine Bot [ 17/May/13 ] |
|
A related Github Pull-Request [GH-673] was closed: |
| Comment by Marco Pivetta [ 17/May/13 ] |
|
BC break without advantages |
| Comment by Doctrine Bot [ 17/May/13 ] |
|
A related Github Pull-Request [GH-673] was reopened: |
[DDC-2460] [GH-672] Simplification example Created: 17/May/13 Updated: 17/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of hell0w0rd: Url: https://github.com/doctrine/doctrine2/pull/672 Message: Remove doctrine class loader, one bootstrap file |
[DDC-2459] ANSI compliant quote strategy. Created: 17/May/13 Updated: 17/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Fabio B. Silva | Assignee: | Fabio B. Silva |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
In order to simplify and speed up the sql generation The implementation would be something like : <?php class AnsiQuoteStrategy implements \Doctrine\ORM\Mapping\QuoteStrategy { /** * {@inheritdoc} */ public function getColumnName($fieldName, ClassMetadata $class, AbstractPlatform $platform) { return $class->fieldMappings[$fieldName]['columnName']; } /** * {@inheritdoc} */ public function getTableName(ClassMetadata $class, AbstractPlatform $platform) { return $class->table['name']; } /** * {@inheritdoc} */ public function getSequenceName(array $definition, ClassMetadata $class, AbstractPlatform $platform) { return $definition['sequenceName']; } /** * {@inheritdoc} */ public function getJoinColumnName(array $joinColumn, ClassMetadata $class, AbstractPlatform $platform) { return $joinColumn['name']; } /** * {@inheritdoc} */ public function getReferencedJoinColumnName(array $joinColumn, ClassMetadata $class, AbstractPlatform $platform) { return $joinColumn['referencedColumnName']; } /** * {@inheritdoc} */ public function getJoinTableName(array $association, ClassMetadata $class, AbstractPlatform $platform) { return $association['joinTable']['name']; } /** * {@inheritdoc} */ public function getIdentifierColumnNames(ClassMetadata $class, AbstractPlatform $platform) { return $class->identifier; } /** * {@inheritdoc} */ public function getColumnAlias($columnName, $counter, AbstractPlatform $platform, ClassMetadata $class = null) { return $platform->getSQLResultCashing($columnName . $counter); } } |
[DDC-2458] [GH-671] [DDC-2435] Fix column name with numbers and non alphanumeric characters. Created: 17/May/13 Updated: 17/May/13 Resolved: 17/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of FabioBatSilva: Url: https://github.com/doctrine/doctrine2/pull/671 Message: http://www.doctrine-project.org/jira/browse/DDC-2435 |
| Comments |
| Comment by Doctrine Bot [ 17/May/13 ] |
|
A related Github Pull-Request [GH-671] was closed: |
| Comment by Fabio B. Silva [ 17/May/13 ] |
|
Merged : https://github.com/doctrine/doctrine2/commit/c9d9b68fa9937218aad05dfca4b3f96b409cfc8e |
[DDC-2457] [GH-670] [DDC-2451] Fix entity listeners serialization Created: 17/May/13 Updated: 17/May/13 Resolved: 17/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of FabioBatSilva: Url: https://github.com/doctrine/doctrine2/pull/670 Message: http://www.doctrine-project.org/jira/browse/DDC-2451 |
| Comments |
| Comment by Doctrine Bot [ 17/May/13 ] |
|
A related Github Pull-Request [GH-670] was closed: |
| Comment by Fabio B. Silva [ 17/May/13 ] |
|
merged : https://github.com/doctrine/doctrine2/commit/65886fdfeaf38692be5196a59530f56fc3e6ab56 |
[DDC-2456] [GH-669] Fixed generating column names for self referencing entity. Created: 17/May/13 Updated: 17/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of hason: Url: https://github.com/doctrine/doctrine2/pull/669 Message: |
[DDC-2455] Setting classes in the entity manager Created: 16/May/13 Updated: 16/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Petter Castro | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | entitymanager | ||
| Description |
|
I am creating my own bundle in Sf2 which will be used for third libraries, but I need to provide some simple and complex queries from this. $this->repository = $this->em->getRepository($className); return $result->getQuery()->getResult(); But when I need complex queries i have to work with the Entity Manager instead of working with the Repository. So tables are named as MyBundle (Group), but not how the third library named (sf_group). As a consequence the SQL throws an error saying that my table does not exist. $query = $this->em->createQuery("SELECT p FROM Groups p"); I sent the className as the entity to avoid this. Something like: $query = $this->em->createQuery("SELECT p FROM ".$this->className." p"); However i need a lot of queries with JOINs, so i would have to change every entity name, which is not convenient. What another way could I implemment this? Thanks for your help. |
[DDC-2454] To-Many OrderBy mechanism should allow many-to-one associations Created: 16/May/13 Updated: 16/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Oleg Namaka | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | association, orderBy | ||
| Description |
class ProductCategory
{
/**
* Store
*
* @var Store
*
* @ORM\ManyToOne(targetEntity="Store")
* @ORM\JoinColumn(name="store_id", referencedColumnName="store_id")
*/
private $Store;
/**
* storeId (for ordering in Product::ProductCategories only)
*
* @var integer
*
* @ORM\Column(name="store_id", type="integer")
*/
private $storeId;
...
class Product
{
/**
* Associated categories
*
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="ProductCategory", mappedBy="Product")
* @ORM\OrderBy({"storeId"="ASC"})
*/
private $ProductCategories;
}
}
If it is possible now to sort the ProductCategories collection by the storeId field, it should also be possible to sort them by the Store association. Currently a set of two fields is required: Store as a regular Many-To-One association and if a need arises to be able to use it to sort the One-To-Many collections then storeId needs to be added to the ProductCategory entity. In that case the ProductCategory entity does not pass the schema validation but is perfectly usable. This should be allowed:
class Product
{
/**
* Associated categories
*
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="ProductCategory", mappedBy="Product")
* @ORM\OrderBy({"Store"="ASC"})
*/
private $ProductCategories;
}
|
[DDC-2453] [GH-668] [WIP] Adding failing test for DDC-2452 Created: 16/May/13 Updated: 16/May/13 Resolved: 16/May/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Marco Pivetta |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of Ocramius: Url: https://github.com/doctrine/doctrine2/pull/668 Message: DQL joins between JTI entities produce invalid SQL when additional conditions are inserted via WITH clause Still working on a fix |
| Comments |
| Comment by Marco Pivetta [ 16/May/13 ] |
|
Duplicate of DDC-2452 |
[DDC-2452] Additional `WITH` condition in joins between JTI roots cause invalid SQL to be produced Created: 16/May/13 Updated: 16/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | DQL, ORM |
| Affects Version/s: | Git Master |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Marco Pivetta | Assignee: | Marco Pivetta |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | dql, sql-walker | ||
| Environment: |
irrelevant |
||
| Description |
|
Given a simple Joined Table Inheritance like following: /** * @Entity @Table(name="foo") @InheritanceType("JOINED") * @DiscriminatorColumn(name="discr", type="string") * @DiscriminatorMap({"foo" = "DDC2452Foo", "bar" = "DDC2452Bar"}) */ class DDC2452Foo { /** @Id @Column(type="integer") @GeneratedValue */ public $id; } /** @Entity @Table(name="bar") */ class DDC2452Bar extends DDC2452Foo { } Following DQL SELECT foo1 FROM DDC2452Foo foo1 JOIN DDC2452Foo foo2 WITH 1=1 Will produce broken SQL: SELECT
f0_.id AS id0, f0_.discr AS discr1
FROM
foo f0_
LEFT JOIN bar b1_
ON f0_.id = b1_.id
LEFT JOIN foo f2_
LEFT JOIN bar b3_
ON f2_.id = b3_.id
ON (1 = 1)
(please note the duplicate `ON` in the SQL) That is caused because of the SQL walker producing the JTI filter with already the `ON` clause in it. That happens because the JTI join conditions are added in https://github.com/doctrine/doctrine2/blob/2.4.0-BETA2/lib/Doctrine/ORM/Query/SqlWalker.php#L823-L825 (`walkRangeVariableDeclaration`), while the additional defined `WITH` conditions are considered in `walkJoinAssociationDeclaration` later on. Added a test case and fix at https://github.com/doctrine/doctrine2/pull/668 |
[DDC-2451] Entity listeners class don't work when metadatas are stored in cache Created: 16/May/13 Updated: 17/May/13 Resolved: 17/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Mapping Drivers, ORM |
| Affects Version/s: | 2.4 |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Bruno CHALOPIN | Assignee: | Fabio B. Silva |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | event, orm | ||
| Environment: |
Ubuntu / PHP 5.4.9 |
||
| Description |
|
I'm using entity listeners class to make PostPersist and PostLoad actions per entity and use memcached as the metadata cache. Before the metadatas are in cache, the methods of the entity listeners are properly called but when the metadatas are in cache, they are no longer called. I've also made the test with APC and the result is the same. |
| Comments |
| Comment by Fabio B. Silva [ 17/May/13 ] |
|
Fixed : https://github.com/doctrine/doctrine2/commit/65886fdfeaf38692be5196a59530f56fc3e6ab56 |
[DDC-2450] Exception throwen when use --dump-sql Created: 16/May/13 Updated: 16/May/13 Resolved: 16/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | 2.3.4 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Konstantin | Assignee: | Marco Pivetta |
| Resolution: | Can't Fix | Votes: | 0 |
| Labels: | None | ||
| Environment: |
symfony 2.3-dev |
||
| Description |
php app/console doctrine:schema:update --dump-sql > a.sql
[Doctrine\DBAL\Schema\SchemaException]
The table with name 'xxx.message76' already exists.
doctrine:schema:update [--complete] [--dump-sql] [--force] [--em[="..."]]
|
| Comments |
| Comment by Marco Pivetta [ 16/May/13 ] |
|
The DBAL can only extract schema definitions from the current DB, so it won't know if there are tables in other databases that are already existing |
| Comment by Konstantin [ 16/May/13 ] |
|
I haven't this exception week ago. What I'd changed? How can I fix it? |
| Comment by Marco Pivetta [ 16/May/13 ] |
|
Konstantin what platform are you currently on? Can you provide the mappings to reproduce the problem? |
[DDC-2449] Amazon Redshift Support Created: 15/May/13 Updated: 15/May/13 |
|
| Status: | Awaiting Feedback |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | New Feature | Priority: | Major |
| Reporter: | Kirill F | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
Amazon Redshift |
||
| Description |
|
It would be nice to get doctrine compatible with Amazon Redshift. It uses a Postgres connector but there are some differences. I'm currently facing an issue with the primary id, in Redshift the generation of an id is different from Postgres and so I'm getting errors associated with generating an id. Here are some references that might be useful: Amazon Manual: |
[DDC-2448] orm:schema-tool:update reports already updated NUMERIC fields Created: 14/May/13 Updated: 14/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | Tools |
| Affects Version/s: | 2.3.4 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Francesco Montefoschi | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
PHP 5.3.10-1ubuntu3.6 with Suhosin-Patch (cli) (built: Mar 11 2013 14:31:48) |
||
| Description |
|
I have a table defined in this way: CREATE TABLE `my_table` ( When I run I get While of course the field is already updated. The same happens in SQL Server 2008 and Postgres 9. |
[DDC-2447] [GH-667] DQL: Allow parameter name to start with any allowed character Created: 13/May/13 Updated: 13/May/13 Resolved: 13/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of juzna: Url: https://github.com/doctrine/doctrine2/pull/667 Message: Especially, do not require it to start with a letter. A *number* is good enough as well. Why is was it not enabled anyway? It's most useful when parameter names are auto generated, e.g. using sha1 or md5. |
| Comments |
| Comment by Doctrine Bot [ 13/May/13 ] |
|
A related Github Pull-Request [GH-667] was closed: |
[DDC-2446] [GH-666] [DDC-2429] Fix xsd definition Created: 13/May/13 Updated: 13/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of FabioBatSilva: Url: https://github.com/doctrine/doctrine2/pull/666 Message: http://www.doctrine-project.org/jira/browse/DDC-2429 |
[DDC-2445] [GH-665] oo Add Null in ScalarExpression Created: 12/May/13 Updated: 22/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of vahid-sohrabloo: Url: https://github.com/doctrine/doctrine2/pull/665 Message: |
| Comments |
| Comment by Doctrine Bot [ 22/May/13 ] |
|
A related Github Pull-Request [GH-665] was closed: |
[DDC-2444] NULL IN CASE WHEN Created: 12/May/13 Updated: 22/May/13 Resolved: 22/May/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | DQL |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | vahid sohrabloo | Assignee: | Guilherme Blanco |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Description |
|
Hi |
| Comments |
| Comment by Miha Vrhovnik [ 14/May/13 ] |
|
We could say a duplicate of: |
| Comment by Guilherme Blanco [ 22/May/13 ] |
|
After further investigation, JPA 2.0 and 2.1 do not support NULL as part of ScalarExpression. |
[DDC-2443] [GH-664] ClassMetadaInfo rename setIdentifierValues() to assignIdentifier() Created: 10/May/13 Updated: 10/May/13 Resolved: 10/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Marco Pivetta |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of entering: Url: https://github.com/doctrine/doctrine2/pull/664 Message: I saw this @todo so i changed name of method and occurrences on code and documentation. |
| Comments |
| Comment by Doctrine Bot [ 10/May/13 ] |
|
A related Github Pull-Request [GH-664] was closed: |
| Comment by Marco Pivetta [ 10/May/13 ] |
|
Cannot fix in 2.x |
[DDC-2442] [GH-663] Adding failing test to demonstrate DDC-2432 Created: 09/May/13 Updated: 10/May/13 Resolved: 10/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of Ocramius: Url: https://github.com/doctrine/doctrine2/pull/663 Message: Attempt to fix Loading proxies with invalid identifiers will currently mark them as initialized regardless of the failure |
| Comments |
| Comment by Doctrine Bot [ 09/May/13 ] |
|
A related Github Pull-Request [GH-663] was closed: |
[DDC-2441] Incorrect SQL Query being generated Created: 09/May/13 Updated: 09/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | DQL |
| Affects Version/s: | 2.4 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Critical |
| Reporter: | Paul Mansell | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
Using Doctrine in Symfony 2.2.1 on Windows Platform |
||
| Description |
|
The following DQL : SELECT s,ba,c,mno,ss,sws,ccs,cns,cws FROM WLCoreBundle:SIM s INNER JOIN s.billingAccount ba LEFT JOIN s.connection c INNER JOIN s.status ss LEFT JOIN s.workflowStatus sws INNER JOIN c.customerStatus ccs INNER JOIN c.networkStatus cns LEFT JOIN c Produces the following SQL : SELECT * FROM (SELECT c0_.id AS id0, c0_.iccid AS iccid1, c0_.created AS created2, c0_.updated AS updated3, c0_.spreference AS spreference4, c1_.id ASid5, c1_.account_number AS account_number6, c1_.name AS name7, c1_.address1 AS address18, c1_.address2 AS address29, c1_.address3 AS address310, c1_.address4 AS address411, c1_.address5 AS address512, c1_.address6 AS address613, c1_.email_address AS email_address14, c1_.spreference AS spreference15, c2_.id AS id16, c2_.msisdn AS msisdn17, c2_.local AS local18, c2_.imsi AS imsi19, c2_.data AS data20, c2_.fax AS fax21, c2_.api AS api22, c2_.activation_date AS activation_date23, c2_.contract_end_date AS contract_end_date24, c2_.created AS created25, c2_.updated AS updated26, c2_.spreference AS spreference27, c3_.id AS id28, c3_.ident AS ident29, c3_.label AS label30, c3_.description AS description31, c4_.id AS id32, c4_.ident AS ident33, c4_.label AS label34, c4_.description AS description35, c4_.customer_label AS customer_label36, c4_.customer_description AS customer_description37, c5_.id AS id38, c5_.ident AS ident39, c5_.label AS label40, c5_.description AS description41, c6_.id AS id42, c6_.ident AS ident43, c6_.label AS label44, c6_.description AS description45, c7_.id AS id46, c7_.ident AS ident47, c7_.label AS label48, c7_.description AS description49, c7_.customer_label AS customer_label50, c7_.customer_description AS customer_description51, c8_.id AS id52, c8_.name AS name53, c8_.email_address AS email_address54, c8_.is_active AS is_active55, c8_.spreference AS spreference56, c0_.billing_account AS billing_account57, c0_.customerHierarchy AS customerHierarchy58, c0_.mno AS mno59, c0_.status AS status60, c0_.workflow_status AS workflow_status61, c1_.customer_hierarchy AS customer_hierarchy62, c1_.country AS country63, c1_.tax_rate AS tax_rate64, c1_.currency AS currency65, c1_.status AS status66, c1_.priority AS priority67, c2_.sim AS sim68, c2_.customer_status AS customer_status69, c2_.network_status AS network_status70, c2_.workflow_status AS workflow_status71, ROW_NUMBER() OVER (ORDER BY msisdn17 ASC) AS doctrine_rownum FROM core_sim c0_ WITH (NOLOCK) INNER JOIN core_billing_account c1_ ON c0_.billing_account = c1_.id LEFT JOIN core_connection c2_ ON c0_.id = c2_.sim INNER JOIN core_sim_status c3_ ON c0_.status = c3_.id LEFT JOIN core_sim_workflow_status c4_ ON c0_.workflow_status = c4_.id INNER JOIN core_connection_customer_status c5_ ON c2_.customer_status = c5_.id INNER JOIN core_connection_network_status c6_ ON c2_.network_status = c6_.id LEFT JOIN core_connection_workflow_status c7_ ON c2_.workflow_status = c7_.id INNER JOIN core_mno c8_ ON c0_.mno = c8_.id) AS doctrine_tbl WHERE doctrine_rownum BETWEEN 1 AND 10 Which returns an error : SQLSTATE[42S22]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Invalid column name 'msisdn17'. Same query works fine in Doctrine 2.3 |
[DDC-2440] composer.json is wrong Created: 09/May/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | Git Master |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Blocker |
| Reporter: | Richard Nicol | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 1 |
| Labels: | None | ||
| Description |
|
In composer.json for doctrine/doctrine-orm-module there is the following require: However "0.8.*" does not exist, it should be "0.8.x-dev" or "dev-master". The later would then use the branch alias. Either way this needs changing, because it's stopping the package from being installed or updated. |
| Comments |
| Comment by Benjamin Eberlei [ 09/May/13 ] |
|
Please open the ticket on the Doctrine ORM Module, this is the ORM bug tracker. |
| Comment by Richard Nicol [ 09/May/13 ] |
|
Sorry my mistake! I have opened an issue on github here: https://github.com/doctrine/DoctrineORMModule/issues/219 in case anyone ends up here. Cheers. |
| Comment by Marco Pivetta [ 09/May/13 ] |
|
DoctrineModule has a 0.8.x branch. Closing |
[DDC-2439] [GH-662] Fixed a code block. Created: 09/May/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of jakzal: Url: https://github.com/doctrine/doctrine2/pull/662 Message: Last code block in the [Keeping your Modules independent](http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/cookbook/resolve-target-entity-listener.html) cookbook is broken. Sphinx does not like the way code was indented. Building the documentation raises the following error: en/cookbook/resolve-target-entity-listener.rst:121: ERROR: Unexpected indentation. |
| Comments |
| Comment by Doctrine Bot [ 09/May/13 ] |
|
A related Github Pull-Request [GH-662] was closed: |
[DDC-2438] [GH-661] Update annotations-reference.rst Created: 09/May/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of HarmenM: Url: https://github.com/doctrine/doctrine2/pull/661 Message: Added missing @JoinColumns in the index |
| Comments |
| Comment by Doctrine Bot [ 09/May/13 ] |
|
A related Github Pull-Request [GH-661] was closed: |
[DDC-2437] [GH-660] Fixed critical bug with position indexBy in DQL Created: 08/May/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.3.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of vlastv: Url: https://github.com/doctrine/doctrine2/pull/660 Message: |
| Comments |
| Comment by Doctrine Bot [ 09/May/13 ] |
|
A related Github Pull-Request [GH-660] was closed: |
[DDC-2436] Inheritance on mappedSuperClass Created: 08/May/13 Updated: 10/May/13 Resolved: 10/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Improvement | Priority: | Major |
| Reporter: | Petter Castro | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | mappedsuperclass | ||
| Description |
|
Sometimes is necessary some associations(many to many) in the mappedSuperClass. This associations should not be lost (inversedBy side and mappedBy ). The only one way to get this, was to implement an abstract class as Single Inheritance Table and then the mappedSuperClass inherit of this. But this is not optimum, because we are losing the OOP, creating classes which should not exist. I realized of this when i was creating my bundle to be used for some projects, but I needed each project could extends from my class and add some properties or methods according their needs. This is the link where you can see more details of this: http://stackoverflow.com/questions/16405556/mapped-super-class-symfony2-2 Thanks for your attention. |
| Comments |
| Comment by Marco Pivetta [ 10/May/13 ] |
|
Mapped superclasses cannot be referenced as they are only meant to provide some simplification by allowing inherited mappings in child classes. If you want to enforce some kind of association in third party libraries, you can define interfaces and reference those: then, with a listener (during the onLoadMetadata event), replace the interfaces in mappings with (configured) concrete class names. |
| Comment by Petter Castro [ 10/May/13 ] |
|
I did it, and everything worked perfectly. However, is there a way to dynamically change the "resolve_target_entities" inside my LoadClassMetadata or inside my php code?. Thanks again for your attention. |
| Comment by Petter Castro [ 10/May/13 ] |
|
I was thinking in duplicate some code of yours. Exactly this one:
$def = $container->findDefinition('doctrine.orm.listeners.resolve_target_entity');
foreach ($config['resolve_target_entities'] as $name => $implementation) {
$def->addMethodCall('addResolveTargetEntity', array(
$name, $implementation, array()
));
}
|
| Comment by Marco Pivetta [ 10/May/13 ] |
|
That's exactly how this has to be done. |
| Comment by Petter Castro [ 10/May/13 ] |
|
I did but there is a problem.... The service doctrine.orm.listeners.resolve_target_entity is not public. So i can't use it in my bundle. I wouldn't like to duplicate all code from this Service. How could I do? |
| Comment by Marco Pivetta [ 10/May/13 ] |
|
That's an issue for the DoctrineBundle, not for the ORM. |
| Comment by Petter Castro [ 10/May/13 ] |
|
Ok thanks a lot for your help. I will redirect my question to them. |
[DDC-2435] Column name with number and reserved character creates invalid query Created: 08/May/13 Updated: 17/May/13 Resolved: 17/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Mapping Drivers |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Dane Lipscombe | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
I have a column name called 1:1 which i map like so |
| Comments |
| Comment by Fabio B. Silva [ 17/May/13 ] |
|
Fixed : https://github.com/doctrine/doctrine2/commit/c9d9b68fa9937218aad05dfca4b3f96b409cfc8e |
[DDC-2434] Error generating entities using annotation docblock (in php). Attribute "fetch" is not being generated by Class EntityGenerator Created: 07/May/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Tools |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | 2.3.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Critical |
| Reporter: | André Antônio Lemos de Moraes | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Environment: |
Windows xp, Apache 2.2 and PHP 5.3.15 |
||
| Description |
|
In this part of the code that begins on line 1047 which is generated lines docblock but not being generated attribute fetch.
$type = null;
switch ($associationMapping['type']) {
case ClassMetadataInfo::ONE_TO_ONE:
$type = 'OneToOne';
break;
case ClassMetadataInfo::MANY_TO_ONE:
$type = 'ManyToOne';
break;
case ClassMetadataInfo::ONE_TO_MANY:
$type = 'OneToMany';
break;
case ClassMetadataInfo::MANY_TO_MANY:
$type = 'ManyToMany';
break;
}
$typeOptions = array();
if (isset($associationMapping['targetEntity'])) {
$typeOptions[] = 'targetEntity="' . $associationMapping['targetEntity'] . '"';
}
if (isset($associationMapping['inversedBy'])) {
$typeOptions[] = 'inversedBy="' . $associationMapping['inversedBy'] . '"';
}
if (isset($associationMapping['mappedBy'])) {
$typeOptions[] = 'mappedBy="' . $associationMapping['mappedBy'] . '"';
}
if ($associationMapping['cascade']) {
$cascades = array();
if ($associationMapping['isCascadePersist']) $cascades[] = '"persist"';
if ($associationMapping['isCascadeRemove']) $cascades[] = '"remove"';
if ($associationMapping['isCascadeDetach']) $cascades[] = '"detach"';
if ($associationMapping['isCascadeMerge']) $cascades[] = '"merge"';
if ($associationMapping['isCascadeRefresh']) $cascades[] = '"refresh"';
$typeOptions[] = 'cascade={' . implode(',', $cascades) . '}';
}
if (isset($associationMapping['orphanRemoval']) && $associationMapping['orphanRemoval']) {
$typeOptions[] = 'orphanRemoval=' . ($associationMapping['orphanRemoval'] ? 'true' : 'false');
}
Below is one possible solution.
$typesFetch = array(
2 => 'LAZY',
3 => 'EAGER',
4 => 'EXTRA_LAZY'
);
if(isset($associationMapping['fetch'])) {
$typeOptions[] = 'fetch="' . $typesFetch[$associationMapping['fetch']] . '"';
}
Tanks |
| Comments |
| Comment by Benjamin Eberlei [ 09/May/13 ] |
|
Highlighted code |
| Comment by Benjamin Eberlei [ 09/May/13 ] |
|
Fixed and will be included in 2.3.4 release |
[DDC-2433] [GH-659] [wip] Pr mapping import Created: 07/May/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of bronze1man: Url: https://github.com/doctrine/doctrine2/pull/659 Message: fix 5 bug of command 1.doctrine:mapping:import then 2.doctrine:schema:update
wip -> follow rule of contribute to doctrine
|
| Comments |
| Comment by Benjamin Eberlei [ 09/May/13 ] |
|
Pull Request was deleted. |
[DDC-2432] Entity can be initialized even if not found Created: 06/May/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Critical |
| Reporter: | Christoph Roensch | Assignee: | Marco Pivetta |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
I have some data in loose consistency, trying to load a field from a certain entity will yield a EntityNotFoundException. Trying it again, for example if the group is reused in a set that gets iterated, will work but provide an empty/dirty Entity. try { echo $item->getGroup()->getName(); } catch (\Doctrine\ORM\EntityNotFoundException $enfe) { // meh } Thats probably because the proxies internal methods set _isInitialized_ to true on the first try. Without reverting it in case of the exception...
public function __load()
{
if (!$this->__isInitialized__ && $this->_entityPersister) {
$this->__isInitialized__ = true;
if ($this->_entityPersister->load($this->_identifier, $this) === null) {
throw new \Doctrine\ORM\EntityNotFoundException();
}
unset($this->_entityPersister, $this->_identifier);
}
}
Is there any reason to do that? |
| Comments |
| Comment by Marco Pivetta [ 06/May/13 ] |
|
That is specifically there to disallow recursive load operations that may occur - did you already try this with latest master? |
| Comment by Christoph Roensch [ 07/May/13 ] |
|
I did not exactly use an "Doctrine Proxy". A colleque of me implemented his own proxies, wich instead of loading from an entity manager, load stuff from a webservice. He simply used the template that a normal proxy provided and thats where i found this case, throw exception - return initialized. Wich i found would be valid for real proxies too. Now i tried to use http://www.doctrine-project.org/blog/doctrine-2-4-beta.html but the composer install just fails because common cant be resolved atm. So i downloaded and compiled all tarballs from github into our project. Now the proxy mechanism seems changed, with an _initializer_ closure I would have to construct a demo then, implementing real basic proxies with a RDBMS? |
| Comment by Marco Pivetta [ 07/May/13 ] |
|
Christoph Roensch did you try setting the minimum-stability flag in composer? Give it a try again with 2.4 and ping back - proxies changed a lot since 2.3 |
| Comment by Christoph Roensch [ 08/May/13 ] |
|
I reproduced it with the tutorial application, please have a look at the two commits i made on https://github.com/croensch/doctrine2-orm-tutorial/tree/DDC-2432 |
| Comment by Marco Pivetta [ 09/May/13 ] |
|
Proposed a fix at https://github.com/doctrine/doctrine2/pull/663 |
[DDC-2431] XML Not parsed Created: 05/May/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.2 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Petter Castro | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | orm, xml | ||
| Environment: |
Ubuntu 13.04, Symfony2 |
||
| Description |
|
When i try to generate my entities mapping in Symfony2 using XML I always get the same error: Element ' {http://doctrine-project.org/schemas/orm/doctrine-mapping}doctrine-mapping': No matching global declaration avail I am not adding any column, because first i need to validate the XML which I can't. <?xml version="1.0" encoding="UTF-8"?> </orm:doctrine-mapping> As you can figure out, my XML is very simple. I am doing just for the validation testing. After this could be validated, I will map my entities. Thanks for your help. Regards, |
| Comments |
| Comment by Benjamin Eberlei [ 09/May/13 ] |
|
The Doctrine XSD hooks itself into the global namespace, see http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/xml-mapping.html for usage. It should work when you loose the "xmlns:orm" and define the tags as "<doctrine-mapping>" |
[DDC-2430] Incorrect results when using ->matching on PersistentCollection Created: 05/May/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.4 |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Stuart Carnie | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | criteria | ||
| Environment: |
Ubuntu 12.04 LTS, PHP 5.4.14 |
||
| Description |
|
When using ->matching() on a PersistentCollection that is already loaded, it returns incorrect results when trying to match by id on a relationship. // NOTE: the user property is a M:1 relationship of $entity // $res is empty, even if $userId exists |
| Comments |
| Comment by Benjamin Eberlei [ 09/May/13 ] |
|
The problem is that matching a user by just the id doesn't work for in memory here. |
| Comment by Benjamin Eberlei [ 09/May/13 ] |
|
Fixed and introduced a BC break for this. See https://github.com/doctrine/doctrine2/commit/30f90a6f49d46d2f367ac774aa77e0c7ce1a573f#L0R31 for information. |
[DDC-2429] Association-Override Problem in XSD Mapping? Created: 05/May/13 Updated: 13/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Fabio B. Silva |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
From a mailinglist entry: I use Doctrine 2.3 in Symfony 2.1.8 I'm using association-overrides in the XML format between several entities. Eclipse shows up several errors. The first error message is shown in every Doctrine file when I declare the file format as such (for example: https://github.com/thewholelifetolearn/Social-Library/blob/master/src/SocialLibrary/ReadBundle/Resources/config/doctrine/GraphicNovel.orm.xml ) <?xml version="1.0" encoding="UTF-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> Eclipse shows this error : The error points to the "doctrine-mapping" line The second error comes up when I change the doctype to (file example: https://gist.github.com/thewholelifetolearn/5462057 ): <?xml version="1.0" encoding="UTF-8"?> <doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping https://raw.github.com/doctrine/doctrine2/master/doctrine-mapping.xsd"> But then this error is shown: ' is expected. The error points on "<association-overrides>" in Novel.orm.xml (line 8) Could someone explain me the errors that show up? The first error doesn't seem to disturb Symfony2 but the second messes around the console commands. But it still generates the database. |
[DDC-2428] [GH-658] UPDATE clause supports ORDER BY and LIMIT Created: 05/May/13 Updated: 05/May/13 Resolved: 05/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of tomglue: Url: https://github.com/doctrine/doctrine2/pull/658 Message: Hi there, I wanted get some feedback on what you thought about supporting ORDER BY and LIMIT for UPDATE statements. Is there a reason this has not already been implemented? Thanks |
| Comments |
| Comment by Doctrine Bot [ 05/May/13 ] |
|
A related Github Pull-Request [GH-658] was closed: |
[DDC-2427] Not working orphanRemoval (OneToMany) Created: 03/May/13 Updated: 04/May/13 Resolved: 04/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Dmitry | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | orm | ||
| Attachments: |
|
| Description |
|
Not working orphanRemoval (OneToMany). The element from target entity deleted but still available. I Not get any error, just not deleted. Configuration example: class SecurityForm implements SecurityEntityInterface /**
.... } |
| Comments |
| Comment by Benjamin Eberlei [ 04/May/13 ] |
|
Works for me, see code attached |
| Comment by Benjamin Eberlei [ 04/May/13 ] |
|
Please provide a failing testcase if you wan't to reopen the ticket. |
[DDC-2426] XML Mapping XSD: Missing length attribute for complexType id Created: 03/May/13 Updated: 04/May/13 Resolved: 04/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Documentation, Mapping Drivers |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | 2.3.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Andrew Moore | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
The xsd file for the doctrine XML mapping specification does not allow the complexType id to contain a length property. This prevents IDEs from giving proper auto-completion for the <id> element. To fix, simply add the following at line 332 of the xsd: <xs:attribute name="length" type="xs:NMTOKEN" /> |
[DDC-2425] Parent entity sometimes fails to load when validating/updating schema. Created: 03/May/13 Updated: 03/May/13 Resolved: 03/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Trivial |
| Reporter: | Scott Gibson | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | Cli, orm, schematool | ||
| Environment: |
Debian 6.0.6 x64 |
||
| Description |
|
Should not have reported, was a stupid mistake on my part. |
[DDC-2424] Removing an inherited entity via a delete cascade constraint does not remove the parent row Created: 02/May/13 Updated: 06/May/13 |
|
| Status: | Awaiting Feedback |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Bruno Jacquet | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Environment: |
Mysql 5.1.66 / Symfony 2.2.1 |
||
| Description |
|
For a parent class: /** * @ORM\Entity * @ORM\Table(name="Base") * @ORM\InheritanceType("JOINED") * @ORM\DiscriminatorColumn(name="discr", type="string") * @ORM\DiscriminatorMap({"child1" = "Child1", "child2" = "Child2"}) */ and simple Child1 & Child2 entities. With another entity (let's call it ExternalEntity) having a bidirectional OneToOne relation owned by Child1: class Child1 extends Base { /** * @ORM\OneToOne(targetEntity="ExternalEntity", inversedBy="xxx") * @ORM\JoinColumn(onDelete="CASCADE", nullable=false) */ private theForeignKey; } Enough for the context. $em->remove(instanceOfExternalEntity); removes the ExternalEntity row and the Child1 row. But a dangling row in the Base table is still there for the now inexistent Child1 instance. Though, a manual delete of either the associated Child1 OR Base row and then the ExternalEntity works. The problem with the cascading deletion of the parent seems to be only present when deleting through a MYSQL cascading delete from another row which has a foreign key on a child. (Not tested with a foreign key on the parent though) |
| Comments |
| Comment by Benjamin Eberlei [ 04/May/13 ] |
|
Can you show the CREATE TABLE and FOREIGN KEY statements of all the tables involved? It seems the cascade of the foreign keys is not propagated between multiple tables? |
| Comment by Bruno Jacquet [ 06/May/13 ] |
|
CREATE TABLE Base (id INT AUTO_INCREMENT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB; ALTER TABLE Child1 ADD CONSTRAINT FK_179B6E88E992F5A FOREIGN KEY (foreignKey) REFERENCES ExternalEntity (id) ON DELETE CASCADE; |
| Comment by Bruno Jacquet [ 06/May/13 ] |
|
The problem is that, the SQL model never explicitely tells the DB to delete the corresponding Base when Child1 gets removed. It looks like it is handled by the doctrine entity manager layer and not the actual DB engine (Base has no on delete cascade nor foreign key to its children). |
| Comment by Bruno Jacquet [ 06/May/13 ] |
|
Maybe using cascade={"remove"}
, instead of onDelete="CASCADE"
to force the cascading process to be handled by doctrine would workaround the bug... But I prefer to have my DB do the logic work as much as possible. |
[DDC-2423] [GH-657] DDC-2413 Created: 01/May/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of JEDIBC: Url: https://github.com/doctrine/doctrine2/pull/657 Message: Fix |
| Comments |
| Comment by Doctrine Bot [ 01/May/13 ] |
|
A related Github Pull-Request [GH-657] was closed: |
[DDC-2422] HIDDEN fileds doesn't work in subqueries Created: 29/Apr/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | DQL |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | yetanotherape | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
I trying to execute query with subquery, which contains GROUP BY:
$subqueryBuilder = $repository->createQueryBuilder('l2')
->select('l2.id, DATE(l2.created) AS HIDDEN created_date')
->groupBy('created_date');
$qb = $repository->createQueryBuilder('l');
$qb->andWhere($qb->expr()->in('l.id', $subqueryBuilder->getDQL()));
$result = $qb->getQuery()->getArrayResult();
And got error: [Syntax Error] line 0, col 80: Error: Expected Doctrine\ORM\Query\Lexer::T_FROM, got ',' If I group simply by "l2.created" without adding it to selected fields, all works fine. But I must use "DATE(l2.created) AS HIDDEN created_date" in selected statement to specify it in GROUP BY statement. |
| Comments |
| Comment by Marco Pivetta [ 01/May/13 ] |
|
`HIDDEN` is expected to be used only to handle hydration. Your example is already invalid at SQL level, where it would result in something like: SELECT
f.bar
FROM
foo f
WHERE
f.id IN(
SELECT
b.baz,
b.tab
FROM
bar b
)
That will obviously fail |
| Comment by yetanotherape [ 01/May/13 ] |
|
Ok, so how I can do: SELECT
f.bar
FROM
foo f
WHERE
f.id IN(
SELECT
b.id
FROM
bar b
GROUP BY DATE(b.created)
)
in DQL? |
| Comment by Marco Pivetta [ 01/May/13 ] |
|
You cannot right now. That's not supported by all vendors - if you need such a query, use native SQL instead. |
[DDC-2421] Many-To-Many relation creation failed when using non PK entity field Created: 29/Apr/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Mapping Drivers, Tools |
| Affects Version/s: | Git Master, 2.3.3 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Bruno CHALOPIN | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | schematool | ||
| Environment: |
Ubuntu linux 12.04, php 5.4.9 |
||
| Description |
|
Given these entities : /** * Class Domain * * @ORM\Entity * @ORM\Table(name="profils_domains") */ class Domain { /** * @var string * * @ORM\Id * @ORM\Column(type="string", length=22, nullable=false) */ protected $name = ''; } /** * Class Web * * @ORM\Entity * @ORM\Table(name="profils_webs", * uniqueConstraints={@ORM\UniqueConstraint(name="web_unique",columns={"name", "domain"})} * ) */ class Web { /** * @var integer * * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer", nullable=false) */ protected $id; /** * @var string * * @ORM\Column(type="string", length=22, nullable=false) */ protected $name = ''; /** * @var Domain * * @ORM\ManyToOne(targetEntity="Domain", fetch="LAZY") * @ORM\JoinColumn(name="domain", referencedColumnName="name", nullable=false, onDelete="CASCADE") */ protected $domain; } /** * Class WebsGroup * * @ORM\Entity * @ORM\Table(name="profils_websgroups", * uniqueConstraints={@ORM\UniqueConstraint(name="websgroup_unique",columns={"name", "domain"})} * ) */ class WebsGroup { /** * @var integer * * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer", nullable=false) */ protected $id; /** * @var string * * @ORM\Column(type="string", length=22, nullable=false) */ protected $name = ''; /** * @var Domain * * @ORM\ManyToOne(targetEntity="Domain", fetch="LAZY") * @ORM\JoinColumn(name="domain", referencedColumnName="name", nullable=false, onDelete="CASCADE") */ protected $domain; /** * @var ArrayCollection * * @ORM\ManyToMany(targetEntity="Web", indexBy="id", fetch="EXTRA_LAZY") * @ORM\JoinTable(name="profils_websgroups_webs", * joinColumns={ * @ORM\JoinColumn(name="websgroup_id", referencedColumnName="id", onDelete="CASCADE"), * @ORM\JoinColumn(name="domain", referencedColumnName="domain", onDelete="CASCADE") * }, * inverseJoinColumns={ * @ORM\JoinColumn(name="web_id", referencedColumnName="id", onDelete="CASCADE"), * @ORM\JoinColumn(name="domain", referencedColumnName="domain", onDelete="CASCADE") * } * ) */ protected $webs; } I've got a domain, some web sites per domain and websgroups which group web sites. I want to be sure in my database that a web group from a domain D can contain only web sites from the very same domain but when calling the console tool for creating my schema it raise :
[Doctrine\ORM\ORMException]
Column name `domain` referenced for relation from Entity\WebsGroup towards Entity\Web does not exist.
It's because domain is already an association to an entity which and is not part of the primary key. I've quick fixed getDefiningClass from Doctrine\ORM\Tools\SchemaTool to make it work but i really don't know if it's the proper way :
private function getDefiningClass($class, $referencedColumnName)
{
$referencedFieldName = $class->getFieldName($referencedColumnName);
if ($class->hasField($referencedFieldName)) {
return array($class, $referencedFieldName);
} else if (in_array($referencedColumnName, $class->getIdentifierColumnNames())) {
// it seems to be an entity as foreign key
foreach ($class->getIdentifierFieldNames() as $fieldName) {
if ($class->hasAssociation($fieldName) && $class->getSingleAssociationJoinColumnName($fieldName) == $referencedColumnName) {
return $this->getDefiningClass(
$this->em->getClassMetadata($class->associationMappings[$fieldName]['targetEntity']),
$class->getSingleAssociationReferencedJoinColumnName($fieldName)
);
}
}
} else if (in_array($referencedColumnName, $class->getAssociationNames())) {
return $this->getDefiningClass(
$this->em->getClassMetadata($class->associationMappings[$referencedColumnName]['targetEntity']),
$class->getSingleAssociationReferencedJoinColumnName($referencedColumnName)
);
}
return null;
}
|
| Comments |
| Comment by Fabio B. Silva [ 29/Apr/13 ] |
|
Bruno CHALOPIN Except for some CS this fix seems good. If you have time you can send as pull request |
| Comment by Bruno CHALOPIN [ 30/Apr/13 ] |
|
I've start making a PR and a test case but it is linked to http://www.doctrine-project.org/jira/browse/DDC-2413 |
| Comment by Benjamin Eberlei [ 01/May/13 ] |
|
You cannot use a reference column that is not a primary key. Doctrine does not support this. |
[DDC-2420] [GH-656] [DDC-2235] Fix for using a LEFT JOIN onto an entity with single table inheritance Created: 28/Apr/13 Updated: 28/Apr/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of tarnfeld: Url: https://github.com/doctrine/doctrine2/pull/656 Message: Possible fix for the bug ------ The issue is when using DQL to perform a left join on an entity using single However when using a left join having an `IN()` in the main where clause makes I've added some regression tests to ensure this bug never creeps back in. They fail on master (highlighting the bug) and pass after these commits have been applied. I've also included a couple of other queries as tests to be sure only this one case has been affected. |
[DDC-2419] [GH-655] [DDC-2409] Fix merge association UnitOfWork::STATE_NEW Created: 28/Apr/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4, 2.3.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of FabioBatSilva: Url: https://github.com/doctrine/doctrine2/pull/655 Message: http://www.doctrine-project.org/jira/browse/DDC-2409 |
| Comments |
| Comment by Doctrine Bot [ 01/May/13 ] |
|
A related Github Pull-Request [GH-655] was closed: |
[DDC-2418] [GH-654] Ilike Created: 27/Apr/13 Updated: 27/Apr/13 Resolved: 27/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of lighthart: Url: https://github.com/doctrine/doctrine2/pull/654 Message: Ilike expression added for postgres support |
| Comments |
| Comment by Doctrine Bot [ 27/Apr/13 ] |
|
A related Github Pull-Request [GH-654] was closed: |
[DDC-2417] [GH-653] [DDC-2415] Fix CustomIdGenerator inheritance Created: 26/Apr/13 Updated: 27/Apr/13 Resolved: 27/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of FabioBatSilva: Url: https://github.com/doctrine/doctrine2/pull/653 Message: http://www.doctrine-project.org/jira/browse/DDC-2415 |
| Comments |
| Comment by Doctrine Bot [ 27/Apr/13 ] |
|
A related Github Pull-Request [GH-653] was closed: |
[DDC-2416] [GH-652] Fixed entities path Created: 26/Apr/13 Updated: 26/Apr/13 Resolved: 26/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Documentation | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Marco Pivetta |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of dannykopping: Url: https://github.com/doctrine/doctrine2/pull/652 Message: In the tutorial, the user is told to create a new file in the `/src` folder, and the `/entities` folder is never referenced. Updating the SQLite schema according to the tutorial fails with the 'No Metadata Classes to process.' message. Changing the folder to `/src` fixes this, ostensibly. |
| Comments |
| Comment by Doctrine Bot [ 26/Apr/13 ] |
|
A related Github Pull-Request [GH-652] was closed: |
| Comment by Marco Pivetta [ 26/Apr/13 ] |
|
merged |
[DDC-2415] CustomIdGenerator not inherited from MappedSuperclass Created: 25/Apr/13 Updated: 27/Apr/13 Resolved: 27/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Sebastian Calvo | Assignee: | Fabio B. Silva |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | orm | ||
| Description |
|
I had a problem with a CUSTOM id generation mapping definition. /**
if ($parent->isMappedSuperclass) { $class->setCustomRepositoryClass($parent->customRepositoryClassName); $class->setCustomGeneratorDefinition($parent->customGeneratorDefinition); <<<<< LINE ADDED }to allow subclasses inherit the customGenerationdefinition. Aside, the docblock annotation help doesn't includes the CustomIdGenerator tag. |
| Comments |
| Comment by Fabio B. Silva [ 27/Apr/13 ] |
|
Fixed : https://github.com/doctrine/doctrine2/commit/d513e0f084eb4e67ccb42877b28a27d47a561665 |
[DDC-2414] Unable to create One-To-Many relation with composite keys Created: 25/Apr/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Mapping Drivers, Tools |
| Affects Version/s: | Git Master, 2.3.3 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Bruno CHALOPIN | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | composite | ||
| Environment: |
Ubuntu 12.04, PHP 5.4.9 |
||
| Description |
|
Given these entities : /** * Class Domain * * @Entity * @Table(name="profils_domains") */ class Domain { /** * @var string * * @Id * @Column(type="string", length=22, nullable=false) */ protected $name = ''; } /** * Class User * * @Entity * @Table(name="profils_users") */ class User { /** * @var string * * @Id * @Column(type="string", length=22, nullable=false) */ protected $name = ''; /** * @var Domain * * @Id * @ManyToOne(targetEntity="Domain", fetch="LAZY") * @JoinColumn(name="domain", referencedColumnName="name", onDelete="CASCADE") */ protected $domain; /** * @var Group[]|ArrayCollection * * @ManyToMany(targetEntity="Group", mappedBy="users") */ protected $groups; } /** * Class Group * * @Entity * @Table(name="profils_groups") */ class Group { /** * @var string * * @Id * @Column(type="string", length=22, nullable=false) */ protected $name = ''; /** * @var Domain * * @Id * @ManyToOne(targetEntity="Domain", fetch="LAZY") * @JoinColumn(name="domain", referencedColumnName="name", onDelete="CASCADE") */ protected $domain; /** * @var User[]|ArrayCollection * * @ManyToMany(targetEntity="User", indexBy="name", fetch="EXTRA_LAZY") * @JoinTable(name="profils_groups_users", * joinColumns={ * @JoinColumn(name="group_name", referencedColumnName="name", onDelete="CASCADE"), * @JoinColumn(name="domain", referencedColumnName="domain", onDelete="CASCADE") * }, * inverseJoinColumns={ * @JoinColumn(name="user_name", referencedColumnName="name", onDelete="CASCADE"), * @JoinColumn(name="domain", referencedColumnName="domain", onDelete="CASCADE") * } * ) */ protected $users; } I want to link users and groups but only from the same domain. |
| Comments |
| Comment by Fabio B. Silva [ 28/Apr/13 ] |
|
Hi Bruno, Could you please explain it a little deeper ? Also, you shoud describe operations you are executing and which errors you got. Cheers |
| Comment by Bruno CHALOPIN [ 29/Apr/13 ] |
|
Hi fabio, The relation i was trying to make is http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-unidirectional-with-join-table However, it implies to use a unique contraint and as explain above when trying to create the schema via doctrine, as i use composite keys, it will generate 2 unique contraints (one for each field) and not one composite unique constraint. Nevertheless, it seems like using composite keys is a lot buggy in doctrine (see http://www.doctrine-project.org/jira/browse/DDC-2413) |
| Comment by Benjamin Eberlei [ 01/May/13 ] |
|
We discussed this in |
[DDC-2413] orm:schema-tool:update want to drop&create PK on join table using composite keys Created: 25/Apr/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Mapping Drivers, Tools |
| Affects Version/s: | Git Master, 2.3.3 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Bruno CHALOPIN | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | composite | ||
| Environment: |
Ubuntu 12.04, php 5.4.9 |
||
| Description |
|
Given these entities : /** * Class Domain * * @Entity * @Table(name="profils_domains") */ class Domain { /** * @var string * * @Id * @Column(type="string", length=22, nullable=false) */ protected $name = ''; } /** * Class User * * @Entity * @Table(name="profils_users") */ class User { /** * @var string * * @Id * @Column(type="string", length=22, nullable=false) */ protected $name = ''; /** * @var Domain * * @Id * @ManyToOne(targetEntity="Domain", fetch="LAZY") * @JoinColumn(name="domain", referencedColumnName="name", onDelete="CASCADE") */ protected $domain; /** * @var Group[]|ArrayCollection * * @ManyToMany(targetEntity="Group", mappedBy="users") */ protected $groups; } /** * Class Group * * @Entity * @Table(name="profils_groups") */ class Group { /** * @var string * * @Id * @Column(type="string", length=22, nullable=false) */ protected $name = ''; /** * @var Domain * * @Id * @ManyToOne(targetEntity="Domain", fetch="LAZY") * @JoinColumn(name="domain", referencedColumnName="name", onDelete="CASCADE") */ protected $domain; /** * @var User[]|ArrayCollection * * @ManyToMany(targetEntity="User", indexBy="name", fetch="EXTRA_LAZY") * @JoinTable(name="profils_groups_users", * joinColumns={ * @JoinColumn(name="group_name", referencedColumnName="name", onDelete="CASCADE"), * @JoinColumn(name="domain", referencedColumnName="domain", onDelete="CASCADE") * }, * inverseJoinColumns={ * @JoinColumn(name="user_name", referencedColumnName="name", onDelete="CASCADE"), * @JoinColumn(name="domain", referencedColumnName="domain", onDelete="CASCADE") * } * ) */ protected $users; } I want to link users and groups but only from the same domain. orm:schema-tool:create generate correct SQL : CREATE TABLE profils_users (name VARCHAR(22) NOT NULL, domain VARCHAR(22) NOT NULL, INDEX IDX_E75993CFA7A91E0B (domain), PRIMARY KEY(name, domain)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB; CREATE TABLE profils_domains (name VARCHAR(22) NOT NULL, PRIMARY KEY(name)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB; CREATE TABLE profils_groups (name VARCHAR(22) NOT NULL, domain VARCHAR(22) NOT NULL, INDEX IDX_229366BBA7A91E0B (domain), PRIMARY KEY(name, domain)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB; CREATE TABLE profils_groups_users (group_name VARCHAR(22) NOT NULL, domain VARCHAR(22) NOT NULL, user_name VARCHAR(22) NOT NULL, INDEX IDX_6CF8F4EA77792576A7A91E0B (group_name, domain), INDEX IDX_6CF8F4EA24A232CFA7A91E0B (user_name, domain), PRIMARY KEY(group_name, domain, user_name)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = InnoDB; ALTER TABLE profils_users ADD CONSTRAINT FK_E75993CFA7A91E0B FOREIGN KEY (domain) REFERENCES profils_domains (name) ON DELETE CASCADE; ALTER TABLE profils_groups ADD CONSTRAINT FK_229366BBA7A91E0B FOREIGN KEY (domain) REFERENCES profils_domains (name) ON DELETE CASCADE; ALTER TABLE profils_groups_users ADD CONSTRAINT FK_6CF8F4EA77792576A7A91E0B FOREIGN KEY (group_name, domain) REFERENCES profils_groups (name, domain) ON DELETE CASCADE; ALTER TABLE profils_groups_users ADD CONSTRAINT FK_6CF8F4EA24A232CFA7A91E0B FOREIGN KEY (user_name, domain) REFERENCES profils_users (name, domain) ON DELETE CASCADE but I make a orm:schema-too:update it want to drop and recreate the PK of the join table each time, and with a wrong sql query : ALTER TABLE profils_groups_users DROP PRIMARY KEY; ALTER TABLE profils_groups_users ADD PRIMARY KEY (group_name, domain, user_name, domain) To avoid the duplication of the same field in primary key creation, you can modify getIndexFieldDeclarationListSQL from Doctrine\DBAL\Platforms\AbstractPlatform like :
public function getIndexFieldDeclarationListSQL(array $fields)
{
$ret = array();
foreach ($fields as $field => $definition) {
if (is_array($definition)) {
$ret[$field] = true;
} else {
$ret[$definition] = true;
}
}
$ret = array_keys($ret);
return implode(', ', $ret);
}
But it would also be nice that doctrine don't try to drop the PK on each update. |
| Comments |
| Comment by Marco Pivetta [ 25/Apr/13 ] |
|
Bruno CHALOPIN do I get this right if I say it's a problem in how columns are sorted in the index definition? Is that the problem? |
| Comment by Bruno CHALOPIN [ 25/Apr/13 ] |
|
I don't think it is a sort order problem (that is to say, i don't care the order). Firstable I don't know why it want to delete the PK as the generation of the join table is correct. |
| Comment by Bruno CHALOPIN [ 25/Apr/13 ] |
|
It's even worse than I thought. When persisting new users, it create this SQL query : INSERT INTO profils_groups_users (group_name, domain, user_name, domain) VALUES (?, ?, ?, ?) I've made a quick fix by adding $columns = array_keys(array_flip($columns)); before the return in Doctrine\ORM\Persisters\ManyToManyPersister::_getInsertRowSQL and $mapping['joinTableColumns'] = array_keys(array_flip($mapping['joinTableColumns'])); before the foreach in Doctrine\ORM\Persisters\ManyToManyPersister::_collectJoinTableColumnParameters It works but I don't know if it's a proper solution. |
| Comment by Benjamin Eberlei [ 01/May/13 ] |
|
You are thinking wrong here, domain can be present in the many to many table twice, with different domains. That you don't have this use-case, because you know the constraint to be 1:1 doesn't matter to Doctrine. It only works with you having a domain_user and a domain_group column, and then it will work in the ManyToManyPersister and in the SchemaTool Update |
| Comment by Bruno CHALOPIN [ 01/May/13 ] |
|
With a domain_user and a domain_group you can no longer be sure that a user can only be in groups from the same domain which is mandatory for me. That's why I don't want the domain to be here twice as it must be the same for the user and the group. |
| Comment by Benjamin Eberlei [ 01/May/13 ] |
|
Yes, this kind of normalization is not supported by Doctrine. You can enforce this with a CHECK constraint or in your domain code. |
| Comment by Bruno CHALOPIN [ 01/May/13 ] |
|
I know this kind of normalization is not supported by Doctrine. That's why I've made a PR (which doesn't introduce any BC breaks). I don't see why it wouldn't be introduce in Doctrine as it's way simpler that adding a CHECK constraint (which I don't find any trace in the annotation documentation) |
| Comment by Bruno CHALOPIN [ 01/May/13 ] |
|
From the mysql documentation : The CHECK clause is parsed but ignored by all storage engines |
[DDC-2412] [GH-651] Fixed typo in SQLFilter (use statement ClassMetadata) Created: 23/Apr/13 Updated: 23/Apr/13 Resolved: 23/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Marco Pivetta |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of EuKov: Url: https://github.com/doctrine/doctrine2/pull/651 Message: |
| Comments |
| Comment by Doctrine Bot [ 23/Apr/13 ] |
|
A related Github Pull-Request [GH-651] was closed: |
| Comment by Marco Pivetta [ 23/Apr/13 ] |
|
merged |
[DDC-2411] Null values get reset when rehydrating an already managed entity Created: 23/Apr/13 Updated: 09/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Simon Garner | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | hydration | ||
| Description |
|
Scenario: 1) You have an entity with a ManyToOne relation (and probably other kinds too, but this is all I have tested) to another entity which is nullable. For example, let's say you have a Book entity which has an "illustrator" field which refers to a Person entity, representing the person who illustrated the book. If the book is not illustrated then you set the field to null. 2) You fetch a Book (by ID) which has its illustrator set to a particular Person. 3) You set that Book's illustrator to null. 4) Without flushing, you fetch the Book again, using different criteria: for example, by title. Because entities are Identity Mapped, this will run a query but then locate the same instance in memory, and try to hydrate that instance with the old data it just fetched. 5) Any fields on the instance that have modified values retain their new values (for example, if we changed the illustrator to a different Person, this would be retained), BUT any fields on the instance which are null get overwritten with the old data (so if we previously set the illustrator to null, without flushing, it would now be reset to the Person value that it had before). There seems to be a mistaken assumption here that null values are fields that have not been hydrated, when this is not necessarily the case. Is this the intended behaviour? The code that causes this behaviour is here: https://github.com/doctrine/doctrine2/blob/e561f47cb2205565eb873f0643637477bfcfc2ff/lib/Doctrine/ORM/Internal/Hydration/ObjectHydrator.php#L471 If you are wondering why anybody would want to fetch the entity again in step 4, my use case for this is the Symfony Validator (but I presume there could be others). If there are any unique constraints (Symfony ones, not Doctrine ones) on the entity, e.g. if we had a unique constraint on the Book title field, then when validating the Book the Symfony Validator would check if there are already any Book entities with the same title as the Book we're validating. It will find the Book that we are working with, and because entities are identity mapped, it will act upon the same instance, and the situation above occurs. Code example: <?php // Create some entities $john = new Person(); $jane = new Person(); $joe = new Person(); $book = new Book(); $em->persist($john); // Now let's try modifying the book $book = $bookRepository->find(123); // make some changes // now validate our changes with Symfony Validator // what happened to our book?? |
| Comments |
| Comment by Fabio B. Silva [ 24/Apr/13 ] |
|
Hi Simon, Could you please try to write a failing test case or paste your entities ? Cheers |
| Comment by Benjamin Eberlei [ 09/May/13 ] |
|
Verified by code review that this issue exists, but it will be very tricky to fix, because the null check is there for other reasons as well. |
[DDC-2410] [GH-650] Fixed typo in SQLFilter addFilterConstraint first param Created: 23/Apr/13 Updated: 23/Apr/13 Resolved: 23/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of EuKov: Url: https://github.com/doctrine/doctrine2/pull/650 Message: Hi, Description in subj, But in the abstract method the param named ClassMetadata ("d" char should be in uppercase) |
| Comments |
| Comment by Doctrine Bot [ 23/Apr/13 ] |
|
A related Github Pull-Request [GH-650] was closed: |
[DDC-2409] Merge operation tries to add new detached entities to indentity map and load them as proxies Created: 22/Apr/13 Updated: 05/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.1 |
| Fix Version/s: | 2.4, 2.3.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Oleg Namaka | Assignee: | Fabio B. Silva |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
class A
{
/**
* @ORM\ManyToOne(targetEntity= "B"...
* @ORM\JoinColumn(name=" ...
*/
protected $b;
public function getB()
{
return $this->b;
}
public function setB($b)
{
$this->b = $b;
}
}
class B
{
/**
* As
*
* @var \Doctrine\Common\Collections\Collection
*
* @ORM\OneToMany(targetEntity="A", mappedBy="B")
*/
protected $As;
}
$b = new \B();
$a = $em->find('A', 123);
$a->setB($b);
$em->detach($a);
$em->detach($b);
$b = $em->merge($b); // notice that $b now is merged
$a = $em->merge($a); // hangs as it creates the proxy for $b and tries to load a though __load even though $b is already managed
Couple of possible issues in the following code from doMerge: if ($assoc2['type'] & ClassMetadata::TO_ONE) { $other = $prop->getValue($entity); if ($other === null) { $prop->setValue($managedCopy, null); } else if ($other instanceof Proxy && !$other->__isInitialized__) { // do not merge fields marked lazy that have not been fetched. continue; } else if ( ! $assoc2['isCascadeMerge']) { if ($this->getEntityState($other, self::STATE_DETACHED) !== self::STATE_MANAGED) { $targetClass = $this->em->getClassMetadata($assoc2['targetEntity']); $relatedId = $targetClass->getIdentifierValues($other); if ($targetClass->subClasses) { $other = $this->em->find($targetClass->name, $relatedId); } else { $other = $this->em->getProxyFactory()->getProxy($assoc2['targetEntity'], $relatedId); $this->registerManaged($other, $relatedId, array()); } } $prop->setValue($managedCopy, $other); }
$relatedId = $targetClass->getIdentifierValues($other);
$relatedId is emply as the detached $other was never flushed. It should never be used to add this entity to the identityMap ($this->registerManaged($other, $relatedId, array())
$other = $this->em->getProxyFactory()->getProxy($assoc2['targetEntity'], $relatedId);
This should never use the proxy factory for new detached entities as they are already merged back ($b). This method seems to not have any means to find managed $b. If $b = $em->merge($b); was not called, the method would probably have worked but I think it is not right to rely on that calling or not calling certain methods or their order. |
| Comments |
| Comment by Benjamin Eberlei [ 01/May/13 ] |
|
Merged Fabios Pull Request |
| Comment by Oleg Namaka [ 01/May/13 ] |
[DDC-2408] [GH-649] Update coding standards Created: 21/Apr/13 Updated: 21/Apr/13 Resolved: 21/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Marco Pivetta |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of calumbrodie: Url: https://github.com/doctrine/doctrine2/pull/649 Message: Removing underscores from property/method names and change use statements to PSR-2 |
| Comments |
| Comment by Doctrine Bot [ 21/Apr/13 ] |
|
A related Github Pull-Request [GH-649] was closed: |
| Comment by Marco Pivetta [ 21/Apr/13 ] |
|
merged |
[DDC-2407] AbstractExporter _getIdGeneratorTypeString does not know about the UUID generator Created: 20/Apr/13 Updated: 20/Apr/13 Resolved: 20/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Tools |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | 2.4 |
| Type: | Bug | Priority: | Minor |
| Reporter: | Jeroen | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
Shouldn't the AbstractExporter->_getIdGeneratorTypeString() method also know about the UUID generator ? |
| Comments |
| Comment by Benjamin Eberlei [ 20/Apr/13 ] |
|
Fixed for 2.4 |
[DDC-2406] Merging of new detached entities with PrePersist lifecycle callback breaks Created: 19/Apr/13 Updated: 01/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.2 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Oleg Namaka | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | merge,, prePersist | ||
| Description |
|
Merging of new detached entities with PrePersist lifecycle callback breaks: Code snippet:
class A
{
/**
* @ORM\ManyToOne(targetEntity= ...
* @ORM\JoinColumn(name=" ...
*/
protected $b;
public function getB()
{
return $this->b;
}
public function setB($b)
{
$this->b = $b;
}
/**
*
* @ORM\PrePersist
*
* @return void
*/
public function onPrePersist()
{
if ($this->getB() === null) {
throw new \Exception('B instance must be defined);
}
....
}
}
class B
{
}
$a = new A();
$b = $em->find('B', 1);
$a->setB($b);
$em->persist($a); // works fine as B instance is set
$em->detach($a);
$a = $em->merge($a) // breaks in onPrePersist
The reason it happens is that the merge operation is trying to persist a new entity created by uow::newInstance($class) without populating its properties first: // If there is no ID, it is actually NEW. .... if ( ! $id) { $managedCopy = $this->newInstance($class); $this->persistNew($class, $managedCopy); } else { .... This should happen first for the $managedCopy:
// Merge state of $entity into existing (managed) entity
foreach ($class->reflClass->getProperties() as $prop) {
....
|
| Comments |
| Comment by Fabio B. Silva [ 28/Apr/13 ] |
|
Benjamin Eberlei, Is this an expected behavior ? I mean.. This issue is about dispatch the event before copy the original values into the managed instance. |
| Comment by Benjamin Eberlei [ 01/May/13 ] |
|
Fabio B. Silva he talks about $em->merge() on a detached entity calling pre persist. This should only happen on a NEW entity, not on a DETACHED one. |
| Comment by Oleg Namaka [ 01/May/13 ] |
|
I tend to disagree with the statement above about pre persist that should not happen on a detached entity being merged back in. If this event handler contains a business logic that this entity needs to be checked against and the detached entity was modified before the merge operation in a way that invalidates it in the prePersist than I will end up with the invalid entity in the identity map. If the merge operation calls persist it must run the prePersist event handler as well for consistency. If there is a logic that prevents persisting invalid entities why should it bypassed in the merge operation? |
[DDC-2405] Changing strategy generates bad query. Created: 19/Apr/13 Updated: 21/Apr/13 |
|
| Status: | Reopened |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Van Rotemberg | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
For (unit, acceptance, functional) testing purpose I need to change the strategy of my GameStuff Entity class. In previous version is was using php instruction below, but since doctrine orm 2.3, it doesn't work anymore. $orm->getClassMetaData('Entities\GameStuff')->setIdGeneratorType(\Doctrine\ORM\Mapping\ClassMetadata::GENERATOR_TYPE_NONE); will trigger: Doctrine\DBAL\DBALException: An exception occurred while executing 'INSERT INTO vbank_accounts (game_id, updated_at, created_at) VALUES (?, ?, ?)' with params {"1":1000010, "2":0,"3":"2013-04-19 17:16:05","4":"2013-04-19 17:16:05"}: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens |
| Comments |
| Comment by Benjamin Eberlei [ 20/Apr/13 ] |
|
The problem is that changing ClassMetadata after generating it from the cache is not really supported and depends on the Internal State of other classes. Have you tried creating a completly new EntityManager and then directly setting this? It could be that the SQL for the entity was already generated inside Doctrine, with the ID Generator information at IDENTITY_AUTO. |
| Comment by Van Rotemberg [ 21/Apr/13 ] |
|
> The problem is that changing ClassMetadata after generating it from the cache is not really supported Yeah, it is a problem indeed, why set ticket status to resolved ? Please fix it or put setIdGeneratorType as private, or AT LEAST add a context exception ... |
| Comment by Marco Pivetta [ 21/Apr/13 ] |
|
Almost every interaction with metadata outside the `loadClassMetadata` event will cause unexpected problems. I don't think throwing an exception there helps in any way. |
| Comment by Van Rotemberg [ 21/Apr/13 ] |
|
@marco pivetta The generation of the actual exception comes from DBALException on the query excetion and point a bad generated query (Invalid parameter number), Adding an exception is just the fast way pointing where the problem comes from and that "setting metadata after loadMetadata is not supported anymore". (It will spare developper's time that used to set metadata, but also help future contribution) > Please fix it or put setIdGeneratorType as private, or AT LEAST add a context exception ... |
[DDC-2404] Filter using join tables Created: 19/Apr/13 Updated: 21/Apr/13 Resolved: 21/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | New Feature | Priority: | Major |
| Reporter: | Filip Procházka | Assignee: | Benjamin Eberlei |
| Resolution: | Duplicate | Votes: | 1 |
| Labels: | filter, filters, join, joins | ||
| Description |
|
Allow filters to add join tables to sql queries for filtering. Let's have Brand entity, and BrandText entity. Text is localisation for each Brand. If there is no BrandText with bt.isPublic and bt.web_id = 123 I wanna filter it globally and not even allow to load Brand entity. This cannot be solved by using DQL, because I need to affect lazily loaded associations, for example in templates Accessing $product->brand-> in template should resolve to NULL, when there is no BrandText.isPublic = 1. This could be solved by allowing filters to add joins to queries. Should I prepare a pull request? |
| Comments |
| Comment by Oleg Namaka [ 21/Apr/13 ] |
|
Duplicates http://www.doctrine-project.org/jira/browse/DDC-2220 |
| Comment by Filip Procházka [ 21/Apr/13 ] |
[DDC-2403] most projects no longer listed on home page Created: 19/Apr/13 Updated: 20/Apr/13 Resolved: 20/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | David Buchmann | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
the homepage of the doctrine project used to list phpcr-odm and some other projects. they recently disapeared. i think they should either all be listed or at least have a link to the projects page at the bottom of that shortlist, saying "all doctrine projects" (see also the discussion on the doctrine-dev mailinglist, i create a ticket here as nothing happened after that discussion) |
| Comments |
| Comment by Benjamin Eberlei [ 20/Apr/13 ] |
|
not a ticket |
[DDC-2402] [DOC] warning on serializing private properties: obsolete? Created: 19/Apr/13 Updated: 19/Apr/13 Resolved: 19/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Minor |
| Reporter: | David Buchmann | Assignee: | Marco Pivetta |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | None | ||
| Description |
|
here we warn that when wanting to serialize properties, you should not have private properties as that would not work with proxies. afaik doctrine commons 2.4 now handles that properly and we can drop that warning, right? |
| Comments |
| Comment by Marco Pivetta [ 19/Apr/13 ] |
|
Duplicate of DCOM-175 |
| Comment by Marco Pivetta [ 19/Apr/13 ] |
|
No, we cannot yet remove that warning - it's not yet fixed |
[DDC-2401] INDEX BY not working on multiple columns Created: 16/Apr/13 Updated: 18/Apr/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | Documentation, ORM |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Quintenvk | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Attachments: |
|
| Description |
|
According to the docs on this page: The following "multi-dimensional index" should be perfectly possible, with a default hydration mode: However, b.id is completely ignored (it is a numeric primary key). I tried to go further, giving 2 products a matching barcode and indexing by barcode and then a (unique, numeric) productid. Only the barcode worked as a key and only one of the products with a matching barcode was selected. I used this query to test: I also flagged the docs, because I don't think a userid should/could be starting from 0. |
| Comments |
| Comment by Fabio B. Silva [ 18/Apr/13 ] |
|
Hi Quintenvk Could you please try to write a failing test case ? Thanks |
| Comment by Quintenvk [ 18/Apr/13 ] |
|
I added a testcase. Please note that the database settings are to be configured in Core/simplys/simplys.php, and that the dump is in dummy.sql. Apart from that all should run well immediately. |
| Comment by Quintenvk [ 18/Apr/13 ] |
|
Fabio, Please check the zip I just attached. I hope this helps you in finding the problem. Thanks, |
| Comment by Fabio B. Silva [ 18/Apr/13 ] |
|
Thanks Quintenvk, SELECT p.barcode, p.id, p.name FROM \core\Simplys\Entity\Products p INDEX BY p.barcode JOIN p.businessid b INDEX BY p.id In this DQL you are trying to index by scalar values, Also the INDEX BY documentations seems wrong to me. The given DQL : SELECT u.id, u.status, upper(u.name) nameUpper FROM User u INDEX BY u.idJOIN u.phonenumbers p INDEX BY p.phonenumber Show the following result : array
0 =>
array
1 =>
object(stdClass)[299]
public '__CLASS__' => string 'Doctrine\Tests\Models\CMS\CmsUser' (length=33)
public 'id' => int 1
..
'nameUpper' => string 'ROMANB' (length=6)
1 =>
array
2 =>
object(stdClass)[298]
public '__CLASS__' => string 'Doctrine\Tests\Models\CMS\CmsUser' (length=33)
public 'id' => int 2
...
'nameUpper' => string 'JWAGE' (length=5)
Which IMHO represents another DQL, something like : SELECT u, p , upper(u.name) nameUpper FROM User u INDEX BY u.id JOIN u.phonenumbers p INDEX BY p.phonenumber |
| Comment by Quintenvk [ 18/Apr/13 ] |
|
Thanks for your reply Fabio. Thanks, |
| Comment by Fabio B. Silva [ 18/Apr/13 ] |
|
Not sure if it's exactly the result you need but you can try Something like : SELECT p, b FROM \core\Simplys\Entity\Products p INDEX BY p.barcode JOIN p.businessid b INDEX BY p.id or something like : SELECT PARTIAL p.{id, barcode, name}, b.{id, attributesYouNeed} FROM \core\Simplys\Entity\Products p INDEX BY p.barcode JOIN p.businessid b INDEX BY p.id
And than : $result = $query->getArrayResult(); |
| Comment by Quintenvk [ 18/Apr/13 ] |
|
Both produce the same result as the query I had. I think i'll move on to loops after a bit more research, too bad it can't be done (at least for now) though... Would've been nice. Thanks for your help though! |
[DDC-2400] [GH-648] Add a AddParameters method in the QueryBuilder Created: 13/Apr/13 Updated: 14/Apr/13 Resolved: 14/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Guilherme Blanco |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of Taluu: Url: https://github.com/doctrine/doctrine2/pull/648 Message: Hi, On doctrine 2.2, when we were calling the method `setParameters` to set a bunch of parameters on the QueryBuilder, each parameters were added or modified if they were already existing. That is not the case since doctrine 2.3 : each calls to `setParameters` will wipe out the other already setted parameters. I think it is logic, but still is a huge BC break, which is not really mentionned in the UPGRADE file (only the once regarding the use of an ArrayCollection is mentionned). With this PR, I added a `addParameters` which allows to add several parameters in several calls. Here is a use case : ```php // wanna search for objects since a specific date $qb->addParameters(new ArrayCollection(['criteriaA' => $criteriaA, return $qb->getQuery()->execute(); public function addSince(QueryBuilder $qb, DateTime $since) { $qb = $qb->andWhere($qb->expr()->gte('u.date', ':since')); return $qb->setParameter('since', $since); }} So, as I was saying, until 2.2, you could use `setParameters` in the main method (`getUserWithSomething`) which was calling (or not) the submethod `addSince`, which could set parameters before calling the `setParameters` method. Now, you can't do that anymore : either you need to make several calls to `setParameter` : ```php Either, I guess, you need to first retrieve all the parameters and then add them by hand : ```php $qb = $qb->setParameters($parameters); So that's why I propose this new method in the QueryBuilder. if I'm wrong anywhere, or need more information please feel free to comment. Cheers. |
| Comments |
| Comment by Doctrine Bot [ 14/Apr/13 ] |
|
A related Github Pull-Request [GH-648] was closed: |
[DDC-2399] unserializing returns proxyclass name with slashes Created: 12/Apr/13 Updated: 12/Apr/13 Resolved: 12/Apr/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Quintenvk | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Environment: |
OSX, PHP 5.4.9 |
||
| Description |
|
I serialize a "user"-entity using the following code: $user->getBusinessid()->getId(); //this is necessary to load the proxy When I unserialize said entity with this code: $em = self::getEntityManager(); I get an error like this: The thing is that everything after _CG_ should not have any forward slashes. In that case the path would be completely correct. |
| Comments |
| Comment by Marco Pivetta [ 12/Apr/13 ] |
|
There's an appositely coded autoloader in the ORM in 2.3 ( https://github.com/doctrine/doctrine2/blob/2.3.3/lib/Doctrine/ORM/Proxy/Autoloader.php ) and in common in 2.4-RC ( https://github.com/doctrine/common/blob/2.4.0-RC1/lib/Doctrine/Common/Proxy/Autoloader.php ). Proxies are not PSR-0 compliant |
| Comment by Quintenvk [ 12/Apr/13 ] |
|
Ah, I hadn't found anything about that. Thank you! |
[DDC-2398] Add a "use namespace" like feature to DQL to have short/reusable entity classname Created: 11/Apr/13 Updated: 11/Apr/13 Resolved: 11/Apr/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | DQL |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | New Feature | Priority: | Minor |
| Reporter: | David Berlioz | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | Namespace, portability | ||
| Description |
|
I find not always portable-friendly the use of full class path in DQL. $query = $em->createQuery('SELECT u FROM \MyProject\Model\User u WHERE u.age > 20'); could be : $query = $em->createQuery('USE \MyProject\Model SELECT u FROM User u WHERE u.age > 20'); or : $query = $em->use('\MyProject\Model')->createQuery('SELECT u FROM User u WHERE u.age > 20'); And with a default namespace attached to the entity manager : $query = $em->use()->createQuery('SELECT u FROM User u WHERE u.age > 20'); |
| Comments |
| Comment by Marco Pivetta [ 11/Apr/13 ] |
|
In strings, you always use the fully qualified class name, or an entity alias |
| Comment by David Berlioz [ 11/Apr/13 ] |
|
yes |
| Comment by Marco Pivetta [ 11/Apr/13 ] |
|
David Berlioz I'm closing this. Strings are values passed around in your system, and having their meaning depend on context is absolutely a no-go |
[DDC-2397] [GH-647] Bugfix/ddc 1048 cordoval Created: 10/Apr/13 Updated: 12/Apr/13 Resolved: 12/Apr/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of cordoval: Url: https://github.com/doctrine/doctrine2/pull/647 Message: |
| Comments |
| Comment by Luis Cordova [ 10/Apr/13 ] |
|
http://www.doctrine-project.org/jira/browse/DDC-1048 please check ^^ |
| Comment by Doctrine Bot [ 12/Apr/13 ] |
|
A related Github Pull-Request [GH-647] was closed: |
[DDC-2396] [GH-646] Oracle Pagination bug when ordering is present Created: 09/Apr/13 Updated: 14/Apr/13 Resolved: 14/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of raykolbe: Url: https://github.com/doctrine/doctrine2/pull/646 Message: Please reference http://www.doctrine-project.org/jira/browse/DDC-1800 and http://www.doctrine-project.org/jira/browse/DDC-1958#comment-19969. |
| Comments |
| Comment by Doctrine Bot [ 10/Apr/13 ] |
|
A related Github Pull-Request [GH-646] was closed: |
[DDC-2395] [GH-645] Fixes Oracle Pagination bug when ordering is present (e.g. Oracle subquery ordering) Created: 09/Apr/13 Updated: 14/Apr/13 Resolved: 14/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Doctrine Bot | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of raykolbe: Url: https://github.com/doctrine/doctrine2/pull/645 Message: See��http://www.doctrine-project.org/jira/browse/DDC-1800 for a full description of the problem. |
| Comments |
| Comment by Doctrine Bot [ 09/Apr/13 ] |
|
A related Github Pull-Request [GH-645] was closed: |
[DDC-2394] QueryExpressionVisitor has no implementation of Comparison::CONTAINS Created: 08/Apr/13 Updated: 14/Apr/13 Resolved: 14/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | Git Master |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Boris Guéry | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | criteria, expression, orm, query | ||
| Environment: |
n/a |
||
| Description |
|
Use case
$criteria = Criteria::create();
$criteria
->andWhere(
$criteria->expr()->contains('r.body', 'foo')
)
;
$entities = $repo->createQueryBuilder()->addCriteria($criteria)->getQuery()->getResult();
Throws the following exception: RuntimeException: Unknown comparison operator: CONTAINS
I except it to properly handle the CONTAINS comparison and result in a LIKE operator. ------- I added a failing test case & a fix there: https://github.com/borisguery/doctrine2/tree/DDC-2394 |
| Comments |
| Comment by Benjamin Eberlei [ 14/Apr/13 ] |
|
This was added in 2.4, you are probably using Collections 1.1 with ORM 2.3, where this occurs. |
[DDC-2393] Doctrine ORM put null to relation field when write persisting Created: 07/Apr/13 Updated: 07/Apr/13 Resolved: 07/Apr/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Nikita | Assignee: | Marco Pivetta |
| Resolution: | Incomplete | Votes: | 0 |
| Labels: | None | ||
| Environment: |
symfony2.2 |
||
| Description |
|
There is my bundle, for more details: |
| Comments |
| Comment by Marco Pivetta [ 07/Apr/13 ] |
|
Can you please make an example of what the failure you're experiencing looks like? What is being done? What is the expected result? What is the experienced behaviour? |
| Comment by Nikita [ 07/Apr/13 ] |
|
When controller persist object, I'm expecting orm put not null into relation field in fact it is not so. |
| Comment by Marco Pivetta [ 07/Apr/13 ] |
|
Nikita the example at https://github.com/hell0w0rd/bad-doctrine-entities/blob/master/DeskBundle/Controller/PostController.php#L15-L21 is not enough to open an issue. Can you please build a simple script that does not involve third party components and that reproduces your problem? It should work only with the ORM. |
| Comment by Nikita [ 07/Apr/13 ] |
|
My issue is closely connected with third party components, because they decouple from each other - is not to decide |
| Comment by Marco Pivetta [ 07/Apr/13 ] |
|
Then it's impossible for us to decide what the cause is. I'm closing this one - consider reproducing the problem locally and then deciding whether this is an ORM or a symfony form problem. |
[DDC-2392] [GH-644] Fixed typos Created: 06/Apr/13 Updated: 06/Apr/13 Resolved: 06/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of pborreli: Url: https://github.com/doctrine/doctrine2/pull/644 Message: |
[DDC-2391] [GH-643] DDC-2390: Remove Query dependency in SqlWalker and Parser Created: 04/Apr/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of beberlei: Url: https://github.com/doctrine/doctrine2/pull/643 Message: To prevent future problems with illegal Query parameter access and also to decouple the namespaces by removing bidirectional dependency. |
| Comments |
| Comment by Doctrine Bot [ 01/May/13 ] |
|
A related Github Pull-Request [GH-643] was closed: |
[DDC-2390] Remove Parser and SQLWalker dependency on Query Created: 04/Apr/13 Updated: 04/Apr/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Improvement | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
Query is too powerful to be available in Parser and SQLWalker, because it may lead to accessing data that changes on subsequent runs of a query that is cached. Idea is to introduce a MetadataBag that contains only the values that are allowed to be accessed. |
[DDC-2389] [GH-642] replaced direct class in instance creation Created: 04/Apr/13 Updated: 04/Apr/13 Resolved: 04/Apr/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of dmishh: Url: https://github.com/doctrine/doctrine2/pull/642 Message: return new EntityManager() -> return new static() on line 945 |
| Comments |
| Comment by Benjamin Eberlei [ 04/Apr/13 ] |
|
A related Github Pull-Request [GH-642] was closed |
| Comment by Marco Pivetta [ 04/Apr/13 ] |
|
EntityManager should not be extended |
[DDC-2388] Zend Optimizer Plus/opcache have overlap in config settings, annotations reader doesn't identify these properly Created: 04/Apr/13 Updated: 23/Apr/13 Resolved: 20/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Mapping Drivers |
| Affects Version/s: | 2.3.3 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | Ross Cousens | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
Doctrine\Common\Annotations\AnnotationReader.php A change was recently authored in the AnnotationReader constructor that checked for a properly configured opcode cache (namely saving comments so that Doctrine can parse annotations). The current open source version of Zend Optimizer+ hosted at GitHub (https://github.com/zend-dev/ZendOptimizerPlus) when loaded registers itself as a module with the name "Zend Optimizer+" but takes configuration directives in the form of "opcache.<parameter>". The change to the constructor requires that if the module name is Zend Optimizer+, then the configuration directives must be prefixed with "zend_optimizerplus.<parameter>". This is clearly incorrect. The most recent update now complains of an AnnotationException as a consequence of this change when running Symfony2 (or Doctrine) with the latest opcache because configuration directives aren't detected properly. I am happy to fix this but could not find a way to report an issue to initiate the process. I would suggest something like this in the constructor: if ((extension_loaded('Zend Optimizer+') || extension_loaded('opcache')) && !(ini_get('opcache.save_comments') == 0 XOR ini_get('zend_optimizerplus.save_comments') == 0)) { What this means is that if either extension is loaded, one of those directives must be true and configured. This is a compromise. The alternative would be to keep the original source and do the following: if (extension_loaded('Zend Optimizer+') && ini_get('zend_optimizerplus.save_comments') == 0) { } if (extension_loaded('opcache') && ini_get('opcache.save_comments') == 0) { throw AnnotationException::optimizerPlusSaveComments(); }I have no idea about the "opcache" module and what it actually equates to or whether it has alternative formats for its configuration directives. I feel like the second suggestion is even smellier than my original suggestion despite probably handling the edge case better. If you want a pull request, I will send one, just let me know how you want to handle it. If my PHP is horrible I apologise. |
| Comments |
| Comment by Marco Pivetta [ 04/Apr/13 ] |
|
Ross Cousens is this already enstabilished? It's not worth changing it until the ZO+ stuff is stable. |
| Comment by Ross Cousens [ 15/Apr/13 ] |
|
Marco Pivetta Benjamin Eberlei Seems stable to me. I guess whether this is a priority or not depends on your subjective weighting of its importance and whether or not you use ZO+. I've ditched APC, and moved 20+ web servers over to Apache+ZO+. I currently deploy my own version of DBAL commons because it is not possible to work around it. https://github.com/zend-dev/ZendOptimizerPlus Please see this reference, why would they suddenly change the name of all the configuration directives especially in light of the fact that this is being integrated into PHP 5.5 as the standard generic "opcache" solution? I think this is where the confusion comes from. It might be branded as ZO+ on Github, but that becomes irrelevant when it's part of core. I've tried contacting Beberlei directly (the author of the change), on Twitter and via e-mail, but no response. Not getting any response is quite annoying as it's been a month since this change was made and whenever I update an existing site or publish a new site I have to deal with this. I need to invest some time in finding out how I can maintain my own fork of OSS projects that pull changes in from the branched master but allow me to keep 1 or 2 files totally different. The other thing that drives me insane is the fact that the postgresql platform drivers can't implement GUID generators because it requires an extension be enabled on the server (seriously, solve with documentation, it's easy to detect programmatically as well) plus the choosing of a function, when there is obviously only one sane choice. I am so grateful for the opportunity to develop with OSS, but the bureaucratic decision-by-committee stuff is so frustrating when you're an end-user and can't find anyone who gives half a crap about stuff that is just plain stupid but overlooked due to resources already spread thin or whatever may be the case. I would be happy to develop fixes as well, but when they languish because you can't find a maintainer that is familiar with the issue, interested in finding a fix, and has the time available to act as custodian of a pull request, it is incredibly demoralizing. |
| Comment by Benjamin Eberlei [ 20/Apr/13 ] |
|
Fixed and released a Collections 1.1.1 version |
| Comment by Ross Cousens [ 23/Apr/13 ] |
|
Thanks Benjamin, I am grateful for the fix! Happy coding! |
[DDC-2387] convert-mapping not working correctly with composite primary keys/foreign keys in 2.4.0-RC1 Created: 03/Apr/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Mapping Drivers |
| Affects Version/s: | None |
| Fix Version/s: | 2.3.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Nicholas Van Dusen | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 1 |
| Labels: | None | ||
| Environment: |
Symfony 2.2.0, MySQL 5.1 |
||
| Description |
|
(Apologies if this is somehow a Symfony-specific issue) I updated my application via Composer yesterday, and received Doctrine 2.4.0-RC1. After this update, generating entities has been problematic under certain circumstances. Here is an example table in MySQL: CREATE TABLE `user_email` ( `user_id` int(10) unsigned NOT NULL COMMENT 'FK to user', `email` varchar(254) NOT NULL, `email_datasource` smallint(1) unsigned NOT NULL COMMENT 'FK to datasource_code', `insert_date` datetime NOT NULL, PRIMARY KEY (`user_id`,`email`,`email_datasource`), KEY `FK_UserEmail_DataSourceCode` (`email_datasource`), CONSTRAINT `FK_UserEmail_User` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 In Doctrine 2.3, the mapping works correctly, and you end up with a 3-part primary key, with a user property mapped to the User entity, and a datasourceCode property mapped to the DatasourceCode entity. All good. In 2.4, the following error is given: Single id is not allowed on composite primary key in entity UserEmail. Removing one of the foreign keys in the table (either to User or DatasourceCode) but keeping the primary key set to all 3 columns allows the mapping to work. But, if you then remove one of the columns from the primary key (say, email_datasource) it fails again. |
| Comments |
| Comment by Benjamin Eberlei [ 04/Apr/13 ] |
|
Can you provide the full stack trace to the exception please? $e->getTraceAsString(); |
| Comment by Nicholas Van Dusen [ 11/Apr/13 ] |
|
Benjamin, I'm not sure how to get the trace for you, since I'm running from inside the Symfony2 doctrine:mapping:import command line item. |
| Comment by Christophe Coevoet [ 11/Apr/13 ] |
|
Use the --verbose option when running the command |
| Comment by Nicholas Van Dusen [ 11/Apr/13 ] |
|
I was able to get a trace for you: #0 /var/www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataInfo.php(1571): Doctrine\ORM\Mapping\MappingException::singleIdNotAllowedOnCompositePrimaryKey('UserEmail') #1 /var/www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(422): Doctrine\ORM\Mapping\ClassMetadataInfo->getSingleIdentifierFieldName() #2 /var/www/html/voxrepublic/vendor/doctrine/orm/lib/Doctrine/ORM/Mapping/ClassMetadataFactory.php(136): Doctrine\ORM\Mapping\ClassMetadataFactory->completeIdGeneratorMapping(Object(Doctrine\ORM\Mapping\ClassMetadata)) #3 /var/www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(302): Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata(Object(Doctrine\ORM\Mapping\ClassMetadata), NULL, false, Array) #4 /var/www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(212): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata('UserEmail') #5 /var/www/html/voxrepublic/vendor/doctrine/common/lib/Doctrine/Common/Persistence/Mapping/AbstractClassMetadataFactory.php(112): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor('UserEmail') #6 /var/www/html/voxrepublic/vendor/doctrine/doctrine-bundle/Doctrine/Bundle/DoctrineBundle/Command/ImportMappingDoctrineCommand.php(108): Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getAllMetadata() #7 /var/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Command/Command.php(240): Doctrine\Bundle\DoctrineBundle\Command\ImportMappingDoctrineCommand->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #8 /var/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(195): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #9 /var/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Console/Application.php(78): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #10 /var/www/html/voxrepublic/vendor/symfony/symfony/src/Symfony/Component/Console/Application.php(106): Symfony\Bundle\FrameworkBundle\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) #11 /var/www/html/voxrepublic/app/console(22): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput)) #12 {main} |
| Comment by Benjamin Eberlei [ 14/Apr/13 ] |
|
The problem is that Doctrine seems to detect that you only have on id field on this entity and then a new function of 2.4 throws this error. I will try to reproduce this with your table. Until then could you show me the var_dump() of the $class variable in Doctrine\ORM\ClassMetadataFactory#completeIdGeneratorMapping()? This would help very much already. |
| Comment by Maximilian Beck [ 15/Apr/13 ] |
|
I have the same error when using "doctrine:mapping:import" CREATE TABLE IF NOT EXISTS `dev_Recipe`.`step` (
`recipe_id` INT NOT NULL ,
`step_number` INT NOT NULL ,
`description` TEXT NULL ,
`timer` INT NULL ,
`image` VARCHAR(100) NULL ,
PRIMARY KEY (`recipe_id`, `step_number`) ,
INDEX `recipe_id_idx` (`recipe_id` ASC) ,
INDEX `step_number` (`step_number` ASC) ,
CONSTRAINT `step_recipe_id`
FOREIGN KEY (`recipe_id` )
REFERENCES `dev_Recipe`.`recipe` (`recipe_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Exception trace: () at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\MappingException.php:258 Doctrine\ORM\Mapping\MappingException::singleIdNotAllowedOnCompositePrimaryKey() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataInfo.php:1571 Doctrine\ORM\Mapping\ClassMetadataInfo->getSingleIdentifierFieldName() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.php:422 Doctrine\ORM\Mapping\ClassMetadataFactory->completeIdGeneratorMapping() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\ClassMetadataFactory.php:136 Doctrine\ORM\Mapping\ClassMetadataFactory->doLoadMetadata() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:302 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->loadMetadata() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:212 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getMetadataFor() at \htdocs\SF2\vendor\doctrine\common\lib\Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory.php:112 Doctrine\Common\Persistence\Mapping\AbstractClassMetadataFactory->getAllMetadata() at \htdocs\SF2\vendor\doctrine\orm\lib\Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand.php:126 Doctrine\ORM\Tools\Console\Command\ConvertMappingCommand->execute() at \htdocs\SF2\vendor\doctrine\doctrine-bundle\Doctrine\Bundle\DoctrineBundle\Command\Proxy\ConvertMappingDoctrineCommand.php:59 Doctrine\Bundle\DoctrineBundle\Command\Proxy\ConvertMappingDoctrineCommand->execute() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Command\Command.php:240 Symfony\Component\Console\Command\Command->run() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:193 Symfony\Component\Console\Application->doRun() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Console\Application.php:78 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at \htdocs\SF2\vendor\symfony\symfony\src\Symfony\Component\Console\Application.php:106 Symfony\Component\Console\Application->run() at \htdocs\SF2\app\console:22 "var_dump($class);" returns: object(Doctrine\ORM\Mapping\ClassMetadata)#470 (36) {
["name"]=>
string(10) "Ingredient"
["namespace"]=>
string(0) ""
["rootEntityName"]=>
string(10) "Ingredient"
["customGeneratorDefinition"]=>
NULL
["customRepositoryClassName"]=>
NULL
["isMappedSuperclass"]=>
bool(false)
["parentClasses"]=>
array(0) {
}
["subClasses"]=>
array(0) {
}
["namedQueries"]=>
array(0) {
}
["namedNativeQueries"]=>
array(0) {
}
["sqlResultSetMappings"]=>
array(0) {
}
["identifier"]=>
array(1) {
[0]=>
string(12) "ingredientId"
}
["inheritanceType"]=>
int(1)
["generatorType"]=>
int(1)
["fieldMappings"]=>
array(4) {
["ingredientId"]=>
array(6) {
["id"]=>
bool(true)
["fieldName"]=>
string(12) "ingredientId"
["columnName"]=>
string(13) "ingredient_id"
["type"]=>
string(7) "integer"
["unsigned"]=>
bool(false)
["nullable"]=>
bool(false)
}
["name"]=>
array(6) {
["fieldName"]=>
string(4) "name"
["columnName"]=>
string(4) "name"
["type"]=>
string(6) "string"
["length"]=>
int(45)
["fixed"]=>
bool(false)
["nullable"]=>
bool(false)
}
["color"]=>
array(5) {
["fieldName"]=>
string(5) "color"
["columnName"]=>
string(5) "color"
["type"]=>
string(7) "integer"
["unsigned"]=>
bool(false)
["nullable"]=>
bool(false)
}
["img"]=>
array(6) {
["fieldName"]=>
string(3) "img"
["columnName"]=>
string(3) "img"
["type"]=>
string(6) "string"
["length"]=>
int(45)
["fixed"]=>
bool(false)
["nullable"]=>
bool(true)
}
}
["fieldNames"]=>
array(4) {
["ingredient_id"]=>
string(12) "ingredientId"
["name"]=>
string(4) "name"
["color"]=>
string(5) "color"
["img"]=>
string(3) "img"
}
["columnNames"]=>
array(4) {
["ingredientId"]=>
string(13) "ingredient_id"
["name"]=>
string(4) "name"
["color"]=>
string(5) "color"
["img"]=>
string(3) "img"
}
["discriminatorValue"]=>
NULL
["discriminatorMap"]=>
array(0) {
}
["discriminatorColumn"]=>
NULL
["table"]=>
array(1) {
["name"]=>
string(10) "ingredient"
}
["lifecycleCallbacks"]=>
array(0) {
}
["associationMappings"]=>
array(1) {
["ingredientCategory"]=>
array(15) {
["fieldName"]=>
string(18) "ingredientCategory"
["targetEntity"]=>
string(18) "IngredientCategory"
["mappedBy"]=>
string(10) "ingredient"
["type"]=>
int(8)
["inversedBy"]=>
NULL
["isOwningSide"]=>
bool(false)
["sourceEntity"]=>
string(10) "Ingredient"
["fetch"]=>
int(2)
["cascade"]=>
array(0) {
}
["isCascadeRemove"]=>
bool(false)
["isCascadePersist"]=>
bool(false)
["isCascadeRefresh"]=>
bool(false)
["isCascadeMerge"]=>
bool(false)
["isCascadeDetach"]=>
bool(false)
["orphanRemoval"]=>
bool(false)
}
}
["isIdentifierComposite"]=>
bool(false)
["containsForeignIdentifier"]=>
bool(false)
["idGenerator"]=>
NULL
["sequenceGeneratorDefinition"]=>
NULL
["tableGeneratorDefinition"]=>
NULL
["changeTrackingPolicy"]=>
int(1)
["isVersioned"]=>
NULL
["versionField"]=>
NULL
["reflClass"]=>
NULL
["isReadOnly"]=>
bool(false)
["namingStrategy":protected]=>
object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
}
["reflFields"]=>
array(0) {
}
["_prototype":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
NULL
}
object(Doctrine\ORM\Mapping\ClassMetadata)#472 (36) {
["name"]=>
string(18) "IngredientCategory"
["namespace"]=>
string(0) ""
["rootEntityName"]=>
string(18) "IngredientCategory"
["customGeneratorDefinition"]=>
NULL
["customRepositoryClassName"]=>
NULL
["isMappedSuperclass"]=>
bool(false)
["parentClasses"]=>
array(0) {
}
["subClasses"]=>
array(0) {
}
["namedQueries"]=>
array(0) {
}
["namedNativeQueries"]=>
array(0) {
}
["sqlResultSetMappings"]=>
array(0) {
}
["identifier"]=>
array(1) {
[0]=>
string(2) "id"
}
["inheritanceType"]=>
int(1)
["generatorType"]=>
int(1)
["fieldMappings"]=>
array(3) {
["id"]=>
array(6) {
["id"]=>
bool(true)
["fieldName"]=>
string(2) "id"
["columnName"]=>
string(2) "id"
["type"]=>
string(7) "integer"
["unsigned"]=>
bool(false)
["nullable"]=>
bool(false)
}
["name"]=>
array(6) {
["fieldName"]=>
string(4) "name"
["columnName"]=>
string(4) "name"
["type"]=>
string(6) "string"
["length"]=>
int(255)
["fixed"]=>
bool(false)
["nullable"]=>
bool(false)
}
["description"]=>
array(4) {
["fieldName"]=>
string(11) "description"
["columnName"]=>
string(11) "description"
["type"]=>
string(4) "text"
["nullable"]=>
bool(true)
}
}
["fieldNames"]=>
array(3) {
["id"]=>
string(2) "id"
["name"]=>
string(4) "name"
["description"]=>
string(11) "description"
}
["columnNames"]=>
array(3) {
["id"]=>
string(2) "id"
["name"]=>
string(4) "name"
["description"]=>
string(11) "description"
}
["discriminatorValue"]=>
NULL
["discriminatorMap"]=>
array(0) {
}
["discriminatorColumn"]=>
NULL
["table"]=>
array(1) {
["name"]=>
string(19) "ingredient_category"
}
["lifecycleCallbacks"]=>
array(0) {
}
["associationMappings"]=>
array(2) {
["ingredient"]=>
array(19) {
["fieldName"]=>
string(10) "ingredient"
["targetEntity"]=>
string(10) "Ingredient"
["inversedBy"]=>
string(18) "ingredientCategory"
["joinTable"]=>
array(3) {
["name"]=>
string(30) "ingredient_category_ingredient"
["joinColumns"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(22) "ingredient_category_id"
["referencedColumnName"]=>
string(2) "id"
}
}
["inverseJoinColumns"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(13) "ingredient_id"
["referencedColumnName"]=>
string(13) "ingredient_id"
}
}
}
["type"]=>
int(8)
["mappedBy"]=>
NULL
["isOwningSide"]=>
bool(true)
["sourceEntity"]=>
string(18) "IngredientCategory"
["fetch"]=>
int(2)
["cascade"]=>
array(0) {
}
["isCascadeRemove"]=>
bool(false)
["isCascadePersist"]=>
bool(false)
["isCascadeRefresh"]=>
bool(false)
["isCascadeMerge"]=>
bool(false)
["isCascadeDetach"]=>
bool(false)
["joinTableColumns"]=>
array(2) {
[0]=>
string(22) "ingredient_category_id"
[1]=>
string(13) "ingredient_id"
}
["relationToSourceKeyColumns"]=>
array(1) {
["ingredient_category_id"]=>
string(2) "id"
}
["relationToTargetKeyColumns"]=>
array(1) {
["ingredient_id"]=>
string(13) "ingredient_id"
}
["orphanRemoval"]=>
bool(false)
}
["parent"]=>
array(19) {
["fieldName"]=>
string(6) "parent"
["targetEntity"]=>
string(18) "IngredientCategory"
["joinColumns"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(9) "parent_id"
["referencedColumnName"]=>
string(2) "id"
}
}
["type"]=>
int(2)
["mappedBy"]=>
NULL
["inversedBy"]=>
NULL
["isOwningSide"]=>
bool(true)
["sourceEntity"]=>
string(18) "IngredientCategory"
["fetch"]=>
int(2)
["cascade"]=>
array(0) {
}
["isCascadeRemove"]=>
bool(false)
["isCascadePersist"]=>
bool(false)
["isCascadeRefresh"]=>
bool(false)
["isCascadeMerge"]=>
bool(false)
["isCascadeDetach"]=>
bool(false)
["sourceToTargetKeyColumns"]=>
array(1) {
["parent_id"]=>
string(2) "id"
}
["joinColumnFieldNames"]=>
array(1) {
["parent_id"]=>
string(9) "parent_id"
}
["targetToSourceKeyColumns"]=>
array(1) {
["id"]=>
string(9) "parent_id"
}
["orphanRemoval"]=>
bool(false)
}
}
["isIdentifierComposite"]=>
bool(false)
["containsForeignIdentifier"]=>
bool(false)
["idGenerator"]=>
NULL
["sequenceGeneratorDefinition"]=>
NULL
["tableGeneratorDefinition"]=>
NULL
["changeTrackingPolicy"]=>
int(1)
["isVersioned"]=>
NULL
["versionField"]=>
NULL
["reflClass"]=>
NULL
["isReadOnly"]=>
bool(false)
["namingStrategy":protected]=>
object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
}
["reflFields"]=>
array(0) {
}
["_prototype":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
NULL
}
object(Doctrine\ORM\Mapping\ClassMetadata)#474 (36) {
["name"]=>
string(6) "Recipe"
["namespace"]=>
string(0) ""
["rootEntityName"]=>
string(6) "Recipe"
["customGeneratorDefinition"]=>
NULL
["customRepositoryClassName"]=>
NULL
["isMappedSuperclass"]=>
bool(false)
["parentClasses"]=>
array(0) {
}
["subClasses"]=>
array(0) {
}
["namedQueries"]=>
array(0) {
}
["namedNativeQueries"]=>
array(0) {
}
["sqlResultSetMappings"]=>
array(0) {
}
["identifier"]=>
array(1) {
[0]=>
string(8) "recipeId"
}
["inheritanceType"]=>
int(1)
["generatorType"]=>
int(1)
["fieldMappings"]=>
array(3) {
["recipeId"]=>
array(6) {
["id"]=>
bool(true)
["fieldName"]=>
string(8) "recipeId"
["columnName"]=>
string(9) "recipe_id"
["type"]=>
string(7) "integer"
["unsigned"]=>
bool(false)
["nullable"]=>
bool(false)
}
["name"]=>
array(6) {
["fieldName"]=>
string(4) "name"
["columnName"]=>
string(4) "name"
["type"]=>
string(6) "string"
["length"]=>
int(255)
["fixed"]=>
bool(false)
["nullable"]=>
bool(false)
}
["description"]=>
array(4) {
["fieldName"]=>
string(11) "description"
["columnName"]=>
string(11) "description"
["type"]=>
string(4) "text"
["nullable"]=>
bool(true)
}
}
["fieldNames"]=>
array(3) {
["recipe_id"]=>
string(8) "recipeId"
["name"]=>
string(4) "name"
["description"]=>
string(11) "description"
}
["columnNames"]=>
array(3) {
["recipeId"]=>
string(9) "recipe_id"
["name"]=>
string(4) "name"
["description"]=>
string(11) "description"
}
["discriminatorValue"]=>
NULL
["discriminatorMap"]=>
array(0) {
}
["discriminatorColumn"]=>
NULL
["table"]=>
array(1) {
["name"]=>
string(6) "recipe"
}
["lifecycleCallbacks"]=>
array(0) {
}
["associationMappings"]=>
array(2) {
["recipeCategory"]=>
array(15) {
["fieldName"]=>
string(14) "recipeCategory"
["targetEntity"]=>
string(14) "RecipeCategory"
["mappedBy"]=>
string(6) "recipe"
["type"]=>
int(8)
["inversedBy"]=>
NULL
["isOwningSide"]=>
bool(false)
["sourceEntity"]=>
string(6) "Recipe"
["fetch"]=>
int(2)
["cascade"]=>
array(0) {
}
["isCascadeRemove"]=>
bool(false)
["isCascadePersist"]=>
bool(false)
["isCascadeRefresh"]=>
bool(false)
["isCascadeMerge"]=>
bool(false)
["isCascadeDetach"]=>
bool(false)
["orphanRemoval"]=>
bool(false)
}
["users"]=>
array(19) {
["fieldName"]=>
string(5) "users"
["targetEntity"]=>
string(5) "Users"
["inversedBy"]=>
string(12) "recipeRecipe"
["joinTable"]=>
array(3) {
["name"]=>
string(13) "users_recipes"
["joinColumns"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(16) "recipe_recipe_id"
["referencedColumnName"]=>
string(9) "recipe_id"
}
}
["inverseJoinColumns"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(8) "users_id"
["referencedColumnName"]=>
string(2) "id"
}
}
}
["type"]=>
int(8)
["mappedBy"]=>
NULL
["isOwningSide"]=>
bool(true)
["sourceEntity"]=>
string(6) "Recipe"
["fetch"]=>
int(2)
["cascade"]=>
array(0) {
}
["isCascadeRemove"]=>
bool(false)
["isCascadePersist"]=>
bool(false)
["isCascadeRefresh"]=>
bool(false)
["isCascadeMerge"]=>
bool(false)
["isCascadeDetach"]=>
bool(false)
["joinTableColumns"]=>
array(2) {
[0]=>
string(16) "recipe_recipe_id"
[1]=>
string(8) "users_id"
}
["relationToSourceKeyColumns"]=>
array(1) {
["recipe_recipe_id"]=>
string(9) "recipe_id"
}
["relationToTargetKeyColumns"]=>
array(1) {
["users_id"]=>
string(2) "id"
}
["orphanRemoval"]=>
bool(false)
}
}
["isIdentifierComposite"]=>
bool(false)
["containsForeignIdentifier"]=>
bool(false)
["idGenerator"]=>
NULL
["sequenceGeneratorDefinition"]=>
NULL
["tableGeneratorDefinition"]=>
NULL
["changeTrackingPolicy"]=>
int(1)
["isVersioned"]=>
NULL
["versionField"]=>
NULL
["reflClass"]=>
NULL
["isReadOnly"]=>
bool(false)
["namingStrategy":protected]=>
object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
}
["reflFields"]=>
array(0) {
}
["_prototype":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
NULL
}
object(Doctrine\ORM\Mapping\ClassMetadata)#476 (36) {
["name"]=>
string(14) "RecipeCategory"
["namespace"]=>
string(0) ""
["rootEntityName"]=>
string(14) "RecipeCategory"
["customGeneratorDefinition"]=>
NULL
["customRepositoryClassName"]=>
NULL
["isMappedSuperclass"]=>
bool(false)
["parentClasses"]=>
array(0) {
}
["subClasses"]=>
array(0) {
}
["namedQueries"]=>
array(0) {
}
["namedNativeQueries"]=>
array(0) {
}
["sqlResultSetMappings"]=>
array(0) {
}
["identifier"]=>
array(1) {
[0]=>
string(2) "id"
}
["inheritanceType"]=>
int(1)
["generatorType"]=>
int(1)
["fieldMappings"]=>
array(3) {
["id"]=>
array(6) {
["id"]=>
bool(true)
["fieldName"]=>
string(2) "id"
["columnName"]=>
string(2) "id"
["type"]=>
string(7) "integer"
["unsigned"]=>
bool(false)
["nullable"]=>
bool(false)
}
["name"]=>
array(6) {
["fieldName"]=>
string(4) "name"
["columnName"]=>
string(4) "name"
["type"]=>
string(6) "string"
["length"]=>
int(45)
["fixed"]=>
bool(false)
["nullable"]=>
bool(false)
}
["description"]=>
array(6) {
["fieldName"]=>
string(11) "description"
["columnName"]=>
string(11) "description"
["type"]=>
string(6) "string"
["length"]=>
int(45)
["fixed"]=>
bool(false)
["nullable"]=>
bool(true)
}
}
["fieldNames"]=>
array(3) {
["id"]=>
string(2) "id"
["name"]=>
string(4) "name"
["description"]=>
string(11) "description"
}
["columnNames"]=>
array(3) {
["id"]=>
string(2) "id"
["name"]=>
string(4) "name"
["description"]=>
string(11) "description"
}
["discriminatorValue"]=>
NULL
["discriminatorMap"]=>
array(0) {
}
["discriminatorColumn"]=>
NULL
["table"]=>
array(1) {
["name"]=>
string(15) "recipe_category"
}
["lifecycleCallbacks"]=>
array(0) {
}
["associationMappings"]=>
array(2) {
["recipe"]=>
array(19) {
["fieldName"]=>
string(6) "recipe"
["targetEntity"]=>
string(6) "Recipe"
["inversedBy"]=>
string(14) "recipeCategory"
["joinTable"]=>
array(3) {
["name"]=>
string(22) "recipe_category_recipe"
["joinColumns"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(18) "recipe_category_id"
["referencedColumnName"]=>
string(2) "id"
}
}
["inverseJoinColumns"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(9) "recipe_id"
["referencedColumnName"]=>
string(9) "recipe_id"
}
}
}
["type"]=>
int(8)
["mappedBy"]=>
NULL
["isOwningSide"]=>
bool(true)
["sourceEntity"]=>
string(14) "RecipeCategory"
["fetch"]=>
int(2)
["cascade"]=>
array(0) {
}
["isCascadeRemove"]=>
bool(false)
["isCascadePersist"]=>
bool(false)
["isCascadeRefresh"]=>
bool(false)
["isCascadeMerge"]=>
bool(false)
["isCascadeDetach"]=>
bool(false)
["joinTableColumns"]=>
array(2) {
[0]=>
string(18) "recipe_category_id"
[1]=>
string(9) "recipe_id"
}
["relationToSourceKeyColumns"]=>
array(1) {
["recipe_category_id"]=>
string(2) "id"
}
["relationToTargetKeyColumns"]=>
array(1) {
["recipe_id"]=>
string(9) "recipe_id"
}
["orphanRemoval"]=>
bool(false)
}
["parent"]=>
array(19) {
["fieldName"]=>
string(6) "parent"
["targetEntity"]=>
string(14) "RecipeCategory"
["joinColumns"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(9) "parent_id"
["referencedColumnName"]=>
string(2) "id"
}
}
["type"]=>
int(2)
["mappedBy"]=>
NULL
["inversedBy"]=>
NULL
["isOwningSide"]=>
bool(true)
["sourceEntity"]=>
string(14) "RecipeCategory"
["fetch"]=>
int(2)
["cascade"]=>
array(0) {
}
["isCascadeRemove"]=>
bool(false)
["isCascadePersist"]=>
bool(false)
["isCascadeRefresh"]=>
bool(false)
["isCascadeMerge"]=>
bool(false)
["isCascadeDetach"]=>
bool(false)
["sourceToTargetKeyColumns"]=>
array(1) {
["parent_id"]=>
string(2) "id"
}
["joinColumnFieldNames"]=>
array(1) {
["parent_id"]=>
string(9) "parent_id"
}
["targetToSourceKeyColumns"]=>
array(1) {
["id"]=>
string(9) "parent_id"
}
["orphanRemoval"]=>
bool(false)
}
}
["isIdentifierComposite"]=>
bool(false)
["containsForeignIdentifier"]=>
bool(false)
["idGenerator"]=>
NULL
["sequenceGeneratorDefinition"]=>
NULL
["tableGeneratorDefinition"]=>
NULL
["changeTrackingPolicy"]=>
int(1)
["isVersioned"]=>
NULL
["versionField"]=>
NULL
["reflClass"]=>
NULL
["isReadOnly"]=>
bool(false)
["namingStrategy":protected]=>
object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
}
["reflFields"]=>
array(0) {
}
["_prototype":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
NULL
}
object(Doctrine\ORM\Mapping\ClassMetadata)#478 (36) {
["name"]=>
string(4) "Step"
["namespace"]=>
string(0) ""
["rootEntityName"]=>
string(4) "Step"
["customGeneratorDefinition"]=>
NULL
["customRepositoryClassName"]=>
NULL
["isMappedSuperclass"]=>
bool(false)
["parentClasses"]=>
array(0) {
}
["subClasses"]=>
array(0) {
}
["namedQueries"]=>
array(0) {
}
["namedNativeQueries"]=>
array(0) {
}
["sqlResultSetMappings"]=>
array(0) {
}
["identifier"]=>
array(2) {
[0]=>
string(10) "stepNumber"
[1]=>
string(6) "recipe"
}
["inheritanceType"]=>
int(1)
["generatorType"]=>
int(1)
["fieldMappings"]=>
array(4) {
["stepNumber"]=>
array(6) {
["id"]=>
bool(true)
["fieldName"]=>
string(10) "stepNumber"
["columnName"]=>
string(11) "step_number"
["type"]=>
string(7) "integer"
["unsigned"]=>
bool(false)
["nullable"]=>
bool(false)
}
["description"]=>
array(4) {
["fieldName"]=>
string(11) "description"
["columnName"]=>
string(11) "description"
["type"]=>
string(4) "text"
["nullable"]=>
bool(true)
}
["timer"]=>
array(5) {
["fieldName"]=>
string(5) "timer"
["columnName"]=>
string(5) "timer"
["type"]=>
string(7) "integer"
["unsigned"]=>
bool(false)
["nullable"]=>
bool(true)
}
["image"]=>
array(6) {
["fieldName"]=>
string(5) "image"
["columnName"]=>
string(5) "image"
["type"]=>
string(6) "string"
["length"]=>
int(100)
["fixed"]=>
bool(false)
["nullable"]=>
bool(true)
}
}
["fieldNames"]=>
array(4) {
["step_number"]=>
string(10) "stepNumber"
["description"]=>
string(11) "description"
["timer"]=>
string(5) "timer"
["image"]=>
string(5) "image"
}
["columnNames"]=>
array(4) {
["stepNumber"]=>
string(11) "step_number"
["description"]=>
string(11) "description"
["timer"]=>
string(5) "timer"
["image"]=>
string(5) "image"
}
["discriminatorValue"]=>
NULL
["discriminatorMap"]=>
array(0) {
}
["discriminatorColumn"]=>
NULL
["table"]=>
array(1) {
["name"]=>
string(4) "step"
}
["lifecycleCallbacks"]=>
array(0) {
}
["associationMappings"]=>
array(1) {
["recipe"]=>
array(20) {
["fieldName"]=>
string(6) "recipe"
["targetEntity"]=>
string(6) "Recipe"
["id"]=>
bool(true)
["joinColumns"]=>
array(1) {
[0]=>
array(2) {
["name"]=>
string(9) "recipe_id"
["referencedColumnName"]=>
string(9) "recipe_id"
}
}
["type"]=>
int(1)
["mappedBy"]=>
NULL
["inversedBy"]=>
NULL
["isOwningSide"]=>
bool(true)
["sourceEntity"]=>
string(4) "Step"
["fetch"]=>
int(2)
["cascade"]=>
array(0) {
}
["isCascadeRemove"]=>
bool(false)
["isCascadePersist"]=>
bool(false)
["isCascadeRefresh"]=>
bool(false)
["isCascadeMerge"]=>
bool(false)
["isCascadeDetach"]=>
bool(false)
["sourceToTargetKeyColumns"]=>
array(1) {
["recipe_id"]=>
string(9) "recipe_id"
}
["joinColumnFieldNames"]=>
array(1) {
["recipe_id"]=>
string(9) "recipe_id"
}
["targetToSourceKeyColumns"]=>
array(1) {
["recipe_id"]=>
string(9) "recipe_id"
}
["orphanRemoval"]=>
bool(false)
}
}
["isIdentifierComposite"]=>
bool(true)
["containsForeignIdentifier"]=>
bool(true)
["idGenerator"]=>
NULL
["sequenceGeneratorDefinition"]=>
NULL
["tableGeneratorDefinition"]=>
NULL
["changeTrackingPolicy"]=>
int(1)
["isVersioned"]=>
NULL
["versionField"]=>
NULL
["reflClass"]=>
NULL
["isReadOnly"]=>
bool(false)
["namingStrategy":protected]=>
object(Doctrine\ORM\Mapping\DefaultNamingStrategy)#258 (0) {
}
["reflFields"]=>
array(0) {
}
["_prototype":"Doctrine\ORM\Mapping\ClassMetadataInfo":private]=>
NULL
}
|
| Comment by Benjamin Eberlei [ 09/May/13 ] |
|
Fixed and merged back to 2.3 |
[DDC-2386] [GH-641] Added yml example in ordered-associations.rst Created: 03/Apr/13 Updated: 03/Apr/13 Resolved: 03/Apr/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Documentation | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Marco Pivetta |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of bksunday: Url: https://github.com/doctrine/doctrine2/pull/641 Message: Added missing yaml example of ordered-associations, and put php, xml and yml codes into a configuration-block instead of separate code-blocks |
| Comments |
| Comment by Benjamin Eberlei [ 03/Apr/13 ] |
|
A related Github Pull-Request [GH-641] was closed |
| Comment by Marco Pivetta [ 03/Apr/13 ] |
|
merged |
[DDC-2385] [GH-640] [Paginator]Add hidden field ordering for postgresql Created: 02/Apr/13 Updated: 02/Apr/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of denkiryokuhatsuden: Url: https://github.com/doctrine/doctrine2/pull/640 Message: In postgresql environment, when some hidden fields are used in orderBy clause, This change fixes above. I'm afraid I'm not sure which branch this will be merged, but anyway here's a patch. |
[DDC-2384] [GH-639] Added abillity to use metacolumn as indexBy Created: 02/Apr/13 Updated: 10/May/13 Resolved: 10/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Improvement | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of goetas: Url: https://github.com/doctrine/doctrine2/pull/639 Message: Added ability to use meta column as indexBy. Useful if association entities is widely used. |
| Comments |
| Comment by Doctrine Bot [ 10/May/13 ] |
|
A related Github Pull-Request [GH-639] was closed: |
[DDC-2383] Foreign relations on primary keys don't work on more than two entities (like Foo<>Bar<>Baz) Created: 01/Apr/13 Updated: 14/Apr/13 Resolved: 14/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3, 2.4 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Jacek Jędrzejewski | Assignee: | Benjamin Eberlei |
| Resolution: | Can't Fix | Votes: | 0 |
| Labels: | hydration, mapping, relations | ||
| Attachments: |
|
| Description |
|
I'm trying to accomplish something like this: For two entities (Foo<>Bar) it works as expected but adding another entity related to Bar (so it's Foo<>Bar<>Baz) ends up with this error:
Fatal error: Uncaught exception 'Doctrine\ORM\Mapping\MappingException' with message 'The column id must be mapped to a field in class Entity\Bar since it is referenced by a join column of another class.' in C:\...\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\MappingException.php:203
Stack trace:
#0 C:\...\vendor\doctrine\orm\lib\Doctrine\ORM\Persisters\BasicEntityPersister.php(734): Doctrine\ORM\Mapping\MappingException::joinColumnMustPointToMappedField('Entity\Bar', 'id')
#1 C:\...\vendor\doctrine\orm\lib\Doctrine\ORM\UnitOfWork.php(2509): Doctrine\ORM\Persisters\BasicEntityPersister->loadOneToOneEntity(Array, Object(Entity\Bar))
#2 C:\...\vendor\doctrine\orm\lib\Doctrine\ORM\Internal\Hydration\ObjectHydrator.php(245): Doctrine\ORM\UnitOfWork->createEntity('Entity\Bar', Array, Array)
#3 C:\...\vendor\doctrine\orm\lib\Doctrine\ORM\Internal\Hydration\ObjectHydrator.php(424): Doctrine\ORM\Internal\Hydration\Ob in C:\...\vendor\doctrine\orm\lib\Doctrine\ORM\Mapping\MappingException.php on line 203
This error appears when there are some records in the database and I want to query for example all Foos. My entites look like this: //Entity/Foo.php /** @Entity @Table(name="foos") */ class Foo { /** @Id @Column(type="integer") @GeneratedValue */ protected $id; /** @OneToOne(targetEntity="Bar", mappedBy="foo") */ protected $bar; public function getId() { return $this->id; } public function getBar() { return $this->bar; } public function setBar($bar) { $bar->setFoo($this); $this->bar = $bar; } } //Entity/Bar.php /** @Entity @Table(name="bars") */ class Bar { /** @Id @OneToOne(targetEntity="Foo", inversedBy="bar") * @JoinColumn(name="id", referencedColumnName="id") */ protected $foo; /** @OneToOne(targetEntity="Baz", mappedBy="bar") */ protected $baz; public function __construct($foo) { $this->foo = $foo; } public function getId() { return $this->getFoo()->getId(); } public function getFoo() { return $this->foo; } public function setFoo($foo) { $this->foo = $foo; } public function getBaz() { return $this->baz; } public function setBaz($baz) { $bar->setBar($this); $this->baz = $baz; } } //Entity/Baz.php /** @Entity @Table(name="bazes") */ class Baz { /** @Id @OneToOne(targetEntity="Bar", inversedBy="baz") * @JoinColumn(name="id", referencedColumnName="id") */ protected $bar; public function __construct($bar) { $this->bar = $bar; } public function getId() { return $this->getBar()->getId(); } public function getBar() { return $this->bar; } public function setBar($bar) { $this->bar = $bar; } } And fails on
$fooRepository = $em->getRepository('Entity\Foo');
$foos = $fooRepository->findAll();
|
| Comments |
| Comment by Jacek Jędrzejewski [ 01/Apr/13 ] |
|
Attaching a test case which results in two exceptions - while creating the schema and while fetching entities. |
| Comment by Benjamin Eberlei [ 14/Apr/13 ] |
|
This is sadly a restriction of the foreign keys as primary key feature. Due to the architecture of shared nothing Metadata instances we cannot validate this at mapping compile time, only at runtime, thus leading to this error. |
[DDC-2382] Multiple relations between two same entities breaks cascade operations Created: 01/Apr/13 Updated: 14/Apr/13 Resolved: 14/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.2 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Alex | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
/**
* @Entity
*/
class User
{
/**
* @Id
* @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @OneToMany(targetEntity="Post", cascade={"remove"}, mappedBy="author")
*/
protected $posts;
/**
* @OneToOne(targetEntity="Post")
*/
protected $lastPost;
public function setLastPost( $post )
{
$this->lastPost = $post;
}
// ...skipped...
}
/**
* @Entity
*/
class Post
{
/**
* @Id
* @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
*
* @ManyToOne(targetEntity="User", inversedBy="posts")
* @JoinColumn(nullable=false)
*/
protected $author;
public function setAuthor( $author )
{
$this->author = $author;
}
// ...skipped...
}
// Let's create user and post
$user = new User();
$em->persist($user);
$post = new Post();
$em->persist($post);
$post->setUser($user);
$user->setLastPost($post);
$em->flush();
// and now remove user
$user = $em->find('User', 1);
$em->remove($user);
$em->flush();
// "The DELETE statement conflicted with the REFERENCE
// constraint...".
// Doctrine removes record from "User" table, ignoring associated records from "Post" table. If i remove "lastPost" relation
//from User entity everything goes OK - at first Doctrine removes assiciated posts, then removes user itself.
|
| Comments |
| Comment by Benjamin Eberlei [ 14/Apr/13 ] |
|
Not an issue of Doctrine, you have to handle this case explicitly, because Doctrine has no way of doing so. |
[DDC-2381] Pagination query can be simplified when simple joins are applied Created: 31/Mar/13 Updated: 08/Apr/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3, 2.4 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Sergey Gerdel | Assignee: | Marco Pivetta |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | paginator | ||
| Attachments: |
|
| Description |
|
Hi. SELECT DISTINCT id0 FROM (SELECT m0_.id AS id0, m0_.title AS title1, m0_.text AS text2, m0_.price AS price3, m0_.originalPrice AS originalPrice4, m0_.condition_type AS condition_type5, m0_.image_1 AS image_16, m0_.image_2 AS image_27, m0_.image_3 AS image_38, m0_.image_4 AS image_49, m0_.image_5 AS image_510, m0_.video AS video11, m0_.contact_email AS contact_email12, m0_.contact_name AS contact_name13, m0_.contact_phone AS contact_phone14, m0_.contact_type AS contact_type15, m0_.published AS published16, m0_.type AS type17, m0_.status AS status18, m0_.highlight AS highlight19, m0_.urgent AS urgent20, m0_.topads AS topads21, m0_.period AS period22, m0_.hits AS hits23, m0_.ip AS ip24, m0_.created_at AS created_at25, m0_.updated_at AS updated_at26 FROM milla_message m0_ INNER JOIN milla_currency m1_ ON m0_.currency_id = m1_.id INNER JOIN milla_category m2_ ON m0_.category_id = m2_.id INNER JOIN milla_region m3_ ON m0_.region_id = m3_.id INNER JOIN milla_city m4_ ON m0_.city_id = m4_.id WHERE m0_.status = 1 ORDER BY m0_.published DESC) dctrn_result LIMIT 20 OFFSET 0 why SELECT DISTINCT %s FROM (%s) dctrn_result ??? |
| Comments |
| Comment by Marco Pivetta [ 31/Mar/13 ] |
|
Not a blocker |
| Comment by Marco Pivetta [ 31/Mar/13 ] |
|
What's the result of `EXPLAIN` on a query without the subquery? |
| Comment by Sergey Gerdel [ 31/Mar/13 ] |
|
explain without the subquery |
| Comment by Marco Pivetta [ 31/Mar/13 ] |
|
Sergey Gerdel that's not the same query. |
| Comment by Marco Pivetta [ 31/Mar/13 ] |
|
Sergey Gerdel this is still using Using index; Using temporary; Using filesort Check your indexes |
| Comment by Sergey Gerdel [ 31/Mar/13 ] |
|
Not in the index problem SELECT DISTINCT id0 FROM (SELECT m0_.id AS id0, m0_.title AS title1, m0_.text AS text2, m0_.price AS price3, m0_.originalPrice AS originalPrice4, m0_.condition_type AS condition_type5, m0_.image_1 AS image_16, m0_.image_2 AS image_27, m0_.image_3 AS image_38, m0_.image_4 AS image_49, m0_.image_5 AS image_510, m0_.video AS video11, m0_.contact_email AS contact_email12, m0_.contact_name AS contact_name13, m0_.contact_phone AS contact_phone14, m0_.contact_type AS contact_type15, m0_.published AS published16, m0_.type AS type17, m0_.status AS status18, m0_.highlight AS highlight19, m0_.urgent AS urgent20, m0_.topads AS topads21, m0_.period AS period22, m0_.hits AS hits23, m0_.ip AS ip24, m0_.created_at AS created_at25, m0_.updated_at AS updated_at26 FROM milla_message m0_ WHERE m0_.status = 1 ORDER BY m0_.published DESC) dctrn_result LIMIT 20 OFFSET 0 Time: 104.614s explain 3 SELECT DISTINCT m0_.id AS id0 FROM milla_message m0_ WHERE m0_.status = 1 ORDER BY m0_.published DESC LIMIT 20 OFFSET 0; Time: 0.001s explain 4 |
| Comment by Marco Pivetta [ 01/Apr/13 ] |
|
Sergey Gerdel the ORM cannot simplify a complex query that way. There may be a conditional on one of the joined results, or generally usage of one of the joined results. Things that could be optimized here are:
The problem I see here is that the chance to spawn random bugs because of the optimization is very high, and you'd have to rewrite `walkSelectStatement` |
| Comment by Marco Pivetta [ 01/Apr/13 ] |
|
Marking as improvement |
| Comment by Sergey Gerdel [ 07/Apr/13 ] |
|
Minor? OK. Programmers may be mistaken in parser reality ORDER BY m0_.published DESC) dctrn_result LIMIT 20 OFFSET 0 |
| Comment by Marco Pivetta [ 07/Apr/13 ] |
|
Sergey Gerdel this problem does not introduce security issues and can be worked around by you while using your own pagination logic. It does not stop you from doing anything, that's why it's minor. |
| Comment by Sergey Gerdel [ 08/Apr/13 ] |
|
ok) |
[DDC-2380] [GH-638] Fixed typos in docblocks. Created: 30/Mar/13 Updated: 01/Apr/13 Resolved: 01/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of dustinmoorman: Url: https://github.com/doctrine/doctrine2/pull/638 Message: Hello again, I'm committing the mini fixes in docblock documentation - swapping 'an SQL' for 'a SQL'. Thanks! |
| Comments |
| Comment by Benjamin Eberlei [ 01/Apr/13 ] |
|
A related Github Pull-Request [GH-638] was closed |
[DDC-2379] [GH-637] Update association-mapping.rst Created: 29/Mar/13 Updated: 30/Mar/13 Resolved: 30/Mar/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of choomz: Url: https://github.com/doctrine/doctrine2/pull/637 Message: |
| Comments |
| Comment by Benjamin Eberlei [ 30/Mar/13 ] |
|
A related Github Pull-Request [GH-637] was closed |
[DDC-2378] Efficient count using Selectable Created: 28/Mar/13 Updated: 28/Mar/13 Resolved: 28/Mar/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.2 |
| Fix Version/s: | None |
| Type: | Improvement | Priority: | Major |
| Reporter: | Michaël Gallego | Assignee: | Marco Pivetta |
| Resolution: | Duplicate | Votes: | 0 |
| Labels: | criteria, selectable | ||
| Description |
|
Hi, I'm currently using intensively the Criteria and Selectable interfaces to provide a generic REST library. However, I've found a problem when I want to paginate data: count return count($this->selectable->matching(new Criteria())); The problem is that EntityRepository returns an ArrayCollection and, hence, load the whole collection which is inefficient. It would be nice if it could return a PersistentCollection instead with lazy-load and perform an optimized count. Thanks |
| Comments |
| Comment by Christophe Coevoet [ 28/Mar/13 ] |
|
duplicate of DDC-2217 |
[DDC-2377] [GH-636] Fixed typos in documentation. Created: 28/Mar/13 Updated: 28/Mar/13 Resolved: 28/Mar/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Guilherme Blanco |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of dustinmoorman: Url: https://github.com/doctrine/doctrine2/pull/636 Message: Hello again everyone! I went ahead and fixed the rest of the instances in the documentation that used 'an SQL'. I also fixed an instance of 'a alias' to be 'an alias', which is proper since alias begins with a vowel. |
| Comments |
| Comment by Benjamin Eberlei [ 28/Mar/13 ] |
|
A related Github Pull-Request [GH-636] was closed |
[DDC-2376] [GH-635] Function test for addManyToOne database column mapping Created: 27/Mar/13 Updated: 30/Mar/13 Resolved: 30/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of TomHAnderson: Url: https://github.com/doctrine/doctrine2/pull/635 Message: When the PHPDriver is used to create a ManyToOne relationship with a table which has a primary key other than id the primary key is not associated correctly. |
| Comments |
| Comment by Benjamin Eberlei [ 30/Mar/13 ] |
|
A related Github Pull-Request [GH-635] was closed |
[DDC-2375] Join with multiples tables Created: 27/Mar/13 Updated: 27/Mar/13 Resolved: 27/Mar/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | New Feature | Priority: | Major |
| Reporter: | Adriano Crivelari | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
Dear Friends, I've a question about Join with multiple tables. Table City: Table State Table Country This is my Entity City: <?php namespace System\Entity; use Doctrine\ORM\Mapping as ORM, Doctrine\Common\Collections\ArrayCollection; /** SysCity * @ORM\Table(name="sys_city") @ORM\Entity(repositoryClass="System\Entity\SysCityRepository") */ class SysCity { /* Instantiate all methods gets and sets */ public function __construct($options = null) { Configurator::configure($this, $options); } /** @var integer * @ORM\Column(name="id_city", type="integer", nullable=false) @ORM\Id @ORM\GeneratedValue(strategy="IDENTITY") */ private $idCity; /** @var string * @ORM\Column(name="city", type="string", length=255, nullable=false) */ private $city; /** @var \SysState * @ORM\ManyToOne(targetEntity="System\Entity\SysState", inversedBy="state") @ORM\JoinColumns( { * @ORM\JoinColumn(name="id_state", referencedColumnName="id_state") * } ) */ private $idState; /** @var \SysCountry * @ORM\ManyToMany(targetEntity="System\Entity\SysCountry", inversedBy="country") @ORM\JoinTable(name="sys_state", joinColumns= {@ORM\JoinColumn(name="id_state", referencedColumnName="id_state")} , inverseJoinColumns= {@ORM\JoinColumn(name="id_country", referencedColumnName="id_country")} ) */ private $idCountry; public function getIdCity() { return $this->idCity; } public function setIdCity($idCity) { $this->idCity = $idCity; return $this; } public function getCity() { return $this->city; } public function setCity($city) { $this->city = $city; return $this; } public function getIdState() { return $this->idState; } public function setIdState($idState) { $this->idState = $idState; return $this; } public function getIdCountry() { return $this->idCountry; } public function setIdCountry($idCountry) { $this->idCountry = $idCountry; return $this; } Thanks a lot! |
| Comments |
| Comment by Marco Pivetta [ 27/Mar/13 ] |
|
This is an issue tracker, not a support forum. Please ask your questions on the http://groups.google.com/group/doctrine-user mailing list or on http://stackoverflow.com/ or on IRC on irc://irc.freenode.net#doctrine |
[DDC-2374] [GH-634] [WIP] Value objects Created: 26/Mar/13 Updated: 14/Apr/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | New Feature | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Issue Links: |
|
||||||||
| Description |
|
This issue is created automatically through a Github pull request on behalf of beberlei: Url: https://github.com/doctrine/doctrine2/pull/634 Message: This pull request takes a different approach than GH-265 to implement ValueObjects. Instead of changing most of the code in every layer, we just inline embedded object class metadata into an entities metadata and then use a reflection proxy that looks like "ReflectionProperty" to do the rewiring. The idea is inspired from Symfony Forms 'property_path' option, where you can write and read values to different parts of an object graph. This is a WIP, there have been no further tests made about the consequences of this approach. The implementation is up for discussion. |
[DDC-2373] [GH-633] [DDC-2042] Added "targetEntity" to AssociationOverride Created: 26/Mar/13 Updated: 27/Mar/13 Resolved: 27/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of spezifanta: Url: https://github.com/doctrine/doctrine2/pull/633 Message: Hey, I needed to override "targetEntity" so I forked Doctrine and applyed it myself. Just after that I found a Ticket DDC-2042 in your Jira so I added a unit test to and would be more than happy to see this commit get merged in to the main master (at some point Cheers, Alex I will stick around in the #doctrine-dev on Freenode for any questions. My nick there is "fanta". Keep up the good work. /**
|
| Comments |
| Comment by Benjamin Eberlei [ 27/Mar/13 ] |
|
A related Github Pull-Request [GH-633] was closed |
[DDC-2372] [GH-632] entity generator - ignore trait properties and methods Created: 26/Mar/13 Updated: 26/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 1 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of Padam87: Url: https://github.com/doctrine/doctrine2/pull/632 Message: Fixes: |
[DDC-2371] [GH-631] Fix typo in one of the orderBy examples. Created: 26/Mar/13 Updated: 27/Mar/13 Resolved: 27/Mar/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of aaronmu: Url: https://github.com/doctrine/doctrine2/pull/631 Message: Fix typo in one of the orderBy examples. |
| Comments |
| Comment by Benjamin Eberlei [ 26/Mar/13 ] |
|
A related Github Pull-Request [GH-631] was closed |
[DDC-2370] Subclass annotations not being read, unable to use OneToMany relation with single table inheritance Created: 26/Mar/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.2 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Major |
| Reporter: | Arthur Bodera | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | annotationdriver, inheritance, orm | ||
| Environment: |
PHP 5.4.11 |
||
| Description |
|
Subclasses that override parent class properties and define relations will not work as expected, because AnnotationDriver/Reader will only use the parent class annotation (discarding whatever subclass defined). The following code will produce error: [Mapping] FAIL - The entity-class 'Test\Office' mapping is invalid: * The mappings Test\Office#employees and Employee#office are incosistent with each other. Test code:
<?php
namespace Test;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Office
{
/**
* @ORM\OneToMany(targetEntity="Person", mappedBy="office")
* @var Person[]|ArrayCollection
*/
protected $people;
/**
* @ORM\OneToMany(targetEntity="Employee", mappedBy="office")
* @var Employee[]|ArrayCollection
*/
protected $employees;
}
/**
* @ORM\Entity
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"employee" = "Employee"})
*/
class Person
{
/**
* @ORM\ManyToOne(targetEntity="Office", inversedBy="people")
* @var Office
*/
protected $office;
}
/**
* @ORM\Entity
*/
class Employee extends Person
{
/**
* @ORM\ManyToOne(targetEntity="Office", inversedBy="employees")
* @var Office
*/
protected $office;
}
|
| Comments |
| Comment by Benjamin Eberlei [ 01/May/13 ] |
|
Overwriting assocations in this way is not supported. |
| Comment by Arthur Bodera [ 01/May/13 ] |
|
Ok, I get that it's not supported right now, but why did you mark it as resolved? |
[DDC-2369] [GH-630] Hotfix for DDC-2359 Created: 24/Mar/13 Updated: 24/Mar/13 Resolved: 24/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Marco Pivetta |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of Ocramius: Url: https://github.com/doctrine/doctrine2/pull/630 Message: `Doctrine\ORM\Mapping\ClassMetadataFactory#wakeupReflection` is called twice as of |
| Comments |
| Comment by Benjamin Eberlei [ 24/Mar/13 ] |
|
A related Github Pull-Request [GH-630] was opened |
| Comment by Benjamin Eberlei [ 24/Mar/13 ] |
|
A related Github Pull-Request [GH-630] was closed |
[DDC-2368] [GH-629] Fixed typos in Doctrine Mapping Types section. Created: 24/Mar/13 Updated: 24/Mar/13 Resolved: 24/Mar/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Guilherme Blanco |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of dustinmoorman: Url: https://github.com/doctrine/doctrine2/pull/629 Message: Hello guys! I am fixing some of the documentation in ``basic-mapping.rst`` that display an incorrect use of 'an' where 'a' should reside. Specifically in regards to instances of 'an SQL'. |
| Comments |
| Comment by Benjamin Eberlei [ 24/Mar/13 ] |
|
A related Github Pull-Request [GH-629] was closed |
[DDC-2367] [GH-628] [Docs] Fix field name in inversedby parameter Created: 24/Mar/13 Updated: 24/Mar/13 Resolved: 24/Mar/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of franmomu: Url: https://github.com/doctrine/doctrine2/pull/628 Message: |
| Comments |
| Comment by Benjamin Eberlei [ 24/Mar/13 ] |
|
A related Github Pull-Request [GH-628] was closed |
[DDC-2366] [GH-627] update document on Doctrine cache provider Created: 22/Mar/13 Updated: 24/Mar/13 Resolved: 24/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of chuanma: Url: https://github.com/doctrine/doctrine2/pull/627 Message: A number of methods have been deleted long time ago. But they still show up on the document page. http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html#deleting http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/caching.html#counting I checked source code. Most of the methods don't exist. They are better to be removed from the doc. I tried to use those functions and was surprised that they didn't exist. |
| Comments |
| Comment by Benjamin Eberlei [ 24/Mar/13 ] |
|
A related Github Pull-Request [GH-627] was closed |
[DDC-2365] [GH-626] default discriminator map - full namespace Created: 22/Mar/13 Updated: 30/Mar/13 Resolved: 30/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of Padam87: Url: https://github.com/doctrine/doctrine2/pull/626 Message: Using Symfony2, if you have two entities with the same name in different bundles, automatic discriminator map detection will trow MappingException. If the namespace is included, there should be no more duplicate key issues. (In this case, setting the map manually is not an option) |
| Comments |
| Comment by Benjamin Eberlei [ 30/Mar/13 ] |
|
A related Github Pull-Request [GH-626] was closed |
[DDC-2364] [GH-625] [DDC-2363] Duplicated record with orphanRemoval and proxy Created: 22/Mar/13 Updated: 22/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of mmenozzi: Url: https://github.com/doctrine/doctrine2/pull/625 Message: See http://www.doctrine-project.org/jira/browse/DDC-2363. |
[DDC-2363] Duplicated record with orphanRemoval and proxy Created: 22/Mar/13 Updated: 22/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.2 |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Manuele Menozzi | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | orphanRemoval, proxy | ||
| Environment: |
Tested both Mac OS X and Ubuntu |
||
| Description |
|
There is a problem that causes duplicate records are created when EntityManager has to remove an entity due to orphanRemoval. The problem occurs only with a double flush and referred object is a proxy. I'm trying to submit a pull request for this ticket. Please, stand by. |
[DDC-2362] [GH-624] Fix getSQLTableAlias for postgre camelized table name Created: 22/Mar/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of cedriclombardot: Url: https://github.com/doctrine/doctrine2/pull/624 Message: In postgreSQL with old databases we can have camelized model names to query on we need to add quote around the table name like : ```
But when query is built the alias taken will be `"` this fix will find the good alias to use enabling to query camelized tables |
| Comments |
| Comment by Benjamin Eberlei [ 22/Mar/13 ] |
|
A related Github Pull-Request [GH-624] was closed |
| Comment by Benjamin Eberlei [ 01/May/13 ] |
|
PR was fixed in favor of Doctrine ORM GH-615 |
[DDC-2361] [GH-623] Related to DDC-2282 Created: 21/Mar/13 Updated: 14/Apr/13 Resolved: 14/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of AaronDDM: Url: https://github.com/doctrine/doctrine2/pull/623 Message: This is related to the patch�� |
| Comments |
| Comment by Benjamin Eberlei [ 21/Mar/13 ] |
|
A related Github Pull-Request [GH-623] was opened |
| Comment by Benjamin Eberlei [ 23/Mar/13 ] |
|
A related Github Pull-Request [GH-623] was closed |
[DDC-2360] [GH-622] Import EntityManager from proper namespace Created: 21/Mar/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of hrubi: Url: https://github.com/doctrine/doctrine2/pull/622 Message: |
| Comments |
| Comment by Benjamin Eberlei [ 21/Mar/13 ] |
|
A related Github Pull-Request [GH-622] was closed |
[DDC-2359] ClassMetadataFactory::wakeupReflection() is called twice Created: 20/Mar/13 Updated: 24/Mar/13 Resolved: 24/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | Mapping Drivers, ORM |
| Affects Version/s: | Git Master, 2.3.2 |
| Fix Version/s: | 2.4 |
| Type: | Improvement | Priority: | Major |
| Reporter: | Stefan Kleff | Assignee: | Marco Pivetta |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
ClassMetadataFactory::wakeupReflection() is called in Common\...\AbstractClassMetadataFactory::loadMetadata() at the end of the method. A few lines after that ORM\...\ClassMetadatafactory::doLoadMeadata() is called, where wakeupReflection() was already called. I think this has been overlooked during the refactoring of the factories. I think the call in doLoadMetadata() is redundant.. |
| Comments |
| Comment by Marco Pivetta [ 24/Mar/13 ] |
|
Fix at |
[DDC-2358] [GH-621] [doc] adding some more doc and examples for lifecycle event listeners and subscribers Created: 19/Mar/13 Updated: 06/Apr/13 Resolved: 06/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Type: | Documentation | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | David Buchmann |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of dbu: Url: https://github.com/doctrine/doctrine2/pull/621 Message: as requested in https://github.com/symfony/symfony-docs/pull/2301 |
[DDC-2357] [GH-620] Chaining for EM Created: 18/Mar/13 Updated: 18/Mar/13 Resolved: 18/Mar/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Marco Pivetta |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of pomaxa: Url: https://github.com/doctrine/doctrine2/pull/620 Message: Chaining for EM methods persist()/flush(), to write more elegant code $em->persist($account)->flush(); |
| Comments |
| Comment by Benjamin Eberlei [ 18/Mar/13 ] |
|
A related Github Pull-Request [GH-620] was closed |
| Comment by Marco Pivetta [ 18/Mar/13 ] |
|
Fluid interfaces on the persistence API are discouraged |
[DDC-2356] [GH-619] [DDC-2090] Fix MultiTableUpdateExecutor with query cache Created: 17/Mar/13 Updated: 17/Mar/13 Resolved: 17/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of FabioBatSilva: Url: https://github.com/doctrine/doctrine2/pull/619 Message: http://www.doctrine-project.org/jira/browse/DDC-2090 |
| Comments |
| Comment by Benjamin Eberlei [ 17/Mar/13 ] |
|
A related Github Pull-Request [GH-619] was closed |
| Comment by Fabio B. Silva [ 17/Mar/13 ] |
|
Merged : https://github.com/doctrine/doctrine2/commit/60b8bc63a1a4819cf112cfbbc7cca06b5792aba6 |
[DDC-2355] [GH-618] [DDC-2188] Fix arithmetic priority Created: 16/Mar/13 Updated: 06/Apr/13 Resolved: 06/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of FabioBatSilva: Url: https://github.com/doctrine/doctrine2/pull/618 Message: Hi guys, This patch fix Cheers |
[DDC-2354] [GH-617] Wrong UnitOfWork::computeChangeSet() Created: 16/Mar/13 Updated: 16/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of fchris82: Url: https://github.com/doctrine/doctrine2/pull/617 Message: Sometimes some fields are Proxy when compute "changeSet". If it is Proxy, some listeners - example Gedmo sortable listener - belive the value has changed and this leads to chaos. I check the $actualValue, if it is Proxy, the value didn't change. |
[DDC-2353] [GH-616] [DDC-2252] Fix delete many-to-many composite key Created: 16/Mar/13 Updated: 06/Apr/13 Resolved: 06/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.3.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of FabioBatSilva: Url: https://github.com/doctrine/doctrine2/pull/616 Message: http://www.doctrine-project.org/jira/browse/DDC-2252 |
[DDC-2352] [GH-615] Update SqlWalker.php Created: 15/Mar/13 Updated: 15/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of mikemeier: Url: https://github.com/doctrine/doctrine2/pull/615 Message: Always be sure that only a-z characters are used for table alias, otherwise use generic "t" for "table" |
[DDC-2351] Entity Listener vs. Event Listener Created: 15/Mar/13 Updated: 15/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | Git Master |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Improvement | Priority: | Major |
| Reporter: | Fabian Spillner | Assignee: | Fabio B. Silva |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
Entity Listener and Event Listener don't get same events. An example is the onFlush event, which Entity Listener doesn't get. Why are both listeners receiving different events and not same events? For consistency I'd like to see that both get same events - if I understand the purpose of Entity Listener correctly: it should be an alternative to Event Listener with same functionality but is bound to an entity. |
| Comments |
| Comment by Benjamin Eberlei [ 15/Mar/13 ] |
|
onFlush and postFlush should be propagated to entity listeners as well |
[DDC-2350] [GH-614] ObjectHydrator: fix entity namespaces. Created: 14/Mar/13 Updated: 04/May/13 Resolved: 04/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of jelmersnoeck: Url: https://github.com/doctrine/doctrine2/pull/614 Message:
If you are using Entity Namespace aliases, the ObjectHydrator will throw a notice for an undefined index of your entity namespace.
|
| Comments |
| Comment by Doctrine Bot [ 04/May/13 ] |
|
A related Github Pull-Request [GH-614] was closed: |
[DDC-2349] [GH-613] Added ability to eagerly load referenced entities with subclasses Created: 13/Mar/13 Updated: 06/Apr/13 Resolved: 06/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Improvement | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of stefankleff: Url: https://github.com/doctrine/doctrine2/pull/613 Message: This is a rather ugly implementation. But maybe someone knows how to do it in a better way |
| Comments |
| Comment by Benjamin Eberlei [ 13/Mar/13 ] |
|
A related Github Pull-Request [GH-613] was opened |
| Comment by Benjamin Eberlei [ 06/Apr/13 ] |
|
A related Github Pull-Request [GH-613] was closed: |
[DDC-2348] [GH-612] Fixed failing tests Created: 13/Mar/13 Updated: 14/Mar/13 Resolved: 14/Mar/13 |
|
| Status: | Closed |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of norzechowicz: Url: https://github.com/doctrine/doctrine2/pull/612 Message: |
| Comments |
| Comment by Benjamin Eberlei [ 14/Mar/13 ] |
|
A related Github Pull-Request [GH-612] was closed |
[DDC-2347] Refresh Uniqueidentifier ID from mssql of inserted Entity in doctrine2.3 Created: 13/Mar/13 Updated: 13/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3.2 |
| Fix Version/s: | None |
| Type: | Bug | Priority: | Minor |
| Reporter: | Lucas Senn | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | dql | ||
| Environment: |
Windows Server 2008 R2, Apache 2.2, Doctrine 2.3, PHP 5.4 |
||
| Description |
|
I don't want you to report something that isn't a bug. If it isn't a bug I'm very sorry for this issue report. Issue as reported in |
[DDC-2346] [GH-611] Fixed typo in hints. Caused slow loading of eager entities. Created: 12/Mar/13 Updated: 14/Apr/13 Resolved: 14/Apr/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.3.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Critical |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of stefankleff: Url: https://github.com/doctrine/doctrine2/pull/611 Message: This small typo prevents entities from being fetched with the deferred- eager-loading path. |
| Comments |
| Comment by Doctrine Bot [ 14/Apr/13 ] |
|
A related Github Pull-Request [GH-611] was closed: |
| Comment by Benjamin Eberlei [ 14/Apr/13 ] |
|
Fixed and waiting in 2.3 release branch |
[DDC-2345] convertObjectParameterToScalarValue() raises a notice Created: 12/Mar/13 Updated: 01/May/13 Resolved: 01/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | 2.3 |
| Fix Version/s: | 2.4 |
| Type: | Bug | Priority: | Minor |
| Reporter: | Massimiliano Arione | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
In Doctrine\ORM\AbstractQuery.php, the method convertObjectParameterToScalarValue() can raise a Notice. $value = $values[$class->getSingleIdentifierFieldName()]; should be changed in this one:
if (isset($values[$class->getSingleIdentifierFieldName()])) {
$value = $values[$class->getSingleIdentifierFieldName()];
}
|
| Comments |
| Comment by Marco Pivetta [ 12/Mar/13 ] |
|
Massimiliano Arione the current DQL implementation doesn't allow you to bind composite key identifiers as parameters, thus you will never reach that piece of code. A test would be needed for this case. |
| Comment by Massimiliano Arione [ 12/Mar/13 ] |
|
Unfortunately, I'm not really a Doctrine guru. 1 in (...)/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php at line 282
2 at ErrorHandler ->handle ('8', 'Undefined index: id', '(...)/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php', '282', array('value' => object(MyEntity), 'class' => object(ClassMetadata), 'values' => array()))
3 in (...)/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php at line 282
at AbstractQuery ->convertObjectParameterToScalarValue (object(MyEntity))
4 in (...)/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php at line 260
at AbstractQuery ->processParameterValue (object(MyEntity))
5 in (...)/vendor/doctrine/orm/lib/Doctrine/ORM/Query.php at line 285
at Query ->processParameterMappings (array('group__1' => array('0')))
6 in (...)/vendor/doctrine/orm/lib/Doctrine/ORM/Query.php at line 258
at Query ->_doExecute ()
7 in (...)/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php at line 737
at AbstractQuery ->execute (null, '1')
8 in (...)/vendor/doctrine/orm/lib/Doctrine/ORM/AbstractQuery.php at line 538
at AbstractQuery ->getResult ()
9 in (...)/vendor/gedmo/doctrine-extensions/lib/Gedmo/Sortable/SortableListener.php at line 410
at SortableListener ->getMaxPosition (object(EntityManager), object(ClassMetadata), array('position' => 'rank', 'groups' => array('my_entity'), 'useObjectClass' => 'Meeting\GestioneBundle\Entity\MyRelatedEntity'), object(MyRelatedEntity))
10 in (...)/vendor/gedmo/doctrine-extensions/lib/Gedmo/Sortable/SortableListener.php at line 114
at SortableListener ->prePersist (object(LifecycleEventArgs))
11 in (...)/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/ContainerAwareEventManager.php at line 61
|
| Comment by Marco Pivetta [ 12/Mar/13 ] |
|
Massimiliano Arione having a composite primary key? |
| Comment by Massimiliano Arione [ 12/Mar/13 ] |
|
Nope, just a plain "id". |
| Comment by Benjamin Eberlei [ 01/May/13 ] |
|
Fixed in 2.4 |
[DDC-2344] [GH-609] Fixed typo. Created: 11/Mar/13 Updated: 11/Mar/13 Resolved: 11/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of haroldb: Url: https://github.com/doctrine/doctrine2/pull/609 Message: |
| Comments |
| Comment by Benjamin Eberlei [ 11/Mar/13 ] |
|
A related Github Pull-Request [GH-609] was closed |
[DDC-2343] [GH-608] Fixed typo Created: 11/Mar/13 Updated: 11/Mar/13 Resolved: 11/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of pborreli: Url: https://github.com/doctrine/doctrine2/pull/608 Message: |
| Comments |
| Comment by Benjamin Eberlei [ 11/Mar/13 ] |
|
A related Github Pull-Request [GH-608] was closed |
[DDC-2342] [GH-607] Fixed typos Created: 11/Mar/13 Updated: 11/Mar/13 Resolved: 11/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of pborreli: Url: https://github.com/doctrine/doctrine2/pull/607 Message: |
| Comments |
| Comment by Benjamin Eberlei [ 11/Mar/13 ] |
|
A related Github Pull-Request [GH-607] was closed |
[DDC-2341] [GH-606] Don't add empty Expr to another one Created: 08/Mar/13 Updated: 12/Mar/13 Resolved: 12/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.3.3 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of jean-gui: Url: https://github.com/doctrine/doctrine2/pull/606 Message: Doctrine should not allow to add an empty Expr to another one. Current code allows that, which can lead to wrong DQL. Example 2: IRC log of the discusion on #doctrine: |
| Comments |
| Comment by Benjamin Eberlei [ 12/Mar/13 ] |
|
A related Github Pull-Request [GH-606] was closed |
[DDC-2340] Using Criteria matching on non-initialized collections ignore changes made on loaded entities Created: 07/Mar/13 Updated: 12/Mar/13 Resolved: 12/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | 2.3 |
| Fix Version/s: | 2.3.3 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Matthieu Napoli | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
Given:
If you do a matching using a Criteria on the collection (http://docs.doctrine-project.org/en/latest/reference/working-with-associations.html#filtering-collections), then the Criteria will be executed through a DB query. But the fields you changed are not updated in the DB, so if you filter/order on those fields, then the result of the filter() will be incorrect. However, if your collection was initialized, the Criteria matching will be done in memory on the ArrayCollection and the result will be correct. So we have the problem for Criteria filtering on non-initialized collections. |
| Comments |
| Comment by Benjamin Eberlei [ 12/Mar/13 ] |
|
Fixed and merged for 2.3.3 |
[DDC-2339] [GH-605] DDC-2338 Added failing test for composite foreign key persistance Created: 07/Mar/13 Updated: 09/May/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Improvement | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of alex88: Url: https://github.com/doctrine/doctrine2/pull/605 Message: I've added this test regarding ticket DDC-2338 |
| Comments |
| Comment by Benjamin Eberlei [ 09/May/13 ] |
|
This is documented behavior and would just be an improvement |
[DDC-2338] Entity with composite foreign keys identifiers should be persisted after related entities without exception Created: 07/Mar/13 Updated: 07/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | ORM |
| Affects Version/s: | Git Master |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Improvement | Priority: | Minor |
| Reporter: | Alessandro Tagliapietra | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | orm, unitofwork | ||
| Environment: |
Mac OSX 10.8, php 5.4.11, doctrine git master version |
||
| Description |
|
I've seen that when you create an entity with a composite foreign key as identifier it cannot be flushed until the related entities are already flushed to the database and not just persisted. It would be nice to let the user flush all the entities together and just INSERT first the related entities to get the ID and then use that to INSERT the entity with composite foreign keys. I'm going to create a pull request with the failing test. |
| Comments |
| Comment by Alessandro Tagliapietra [ 07/Mar/13 ] |
|
Created pull request https://github.com/doctrine/doctrine2/pull/605 |
[DDC-2337] Allow an entity to use its own persister to take advantage of DB level features if necessary Created: 06/Mar/13 Updated: 06/Mar/13 |
|
| Status: | Open |
| Project: | Doctrine 2 - ORM |
| Component/s: | Mapping Drivers, ORM |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | New Feature | Priority: | Major |
| Reporter: | Nathanael Noblet | Assignee: | Benjamin Eberlei |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | None | ||
| Attachments: |
|
| Description |
|
I have a situation where I wanted a single table to use INSERT DELAYED. Its an audit log table where I expect each http request to generate many inserts for. In an effort to not over tax the system I implemented a custom Entity Persister so that it would work. This obviously doesn't work with all mapping drivers. However if this is a feature that you think is worth integrating I will fork it on github and complete the implementation alongside any changes/improvements requested... |
[DDC-2336] [GH-604] Added support for string functions in OrderBy clause Created: 06/Mar/13 Updated: 12/Mar/13 Resolved: 12/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of bramstroker: Url: https://github.com/doctrine/doctrine2/pull/604 Message: Extended the OrderBy parser to support string functions directly in the |
| Comments |
| Comment by Benjamin Eberlei [ 12/Mar/13 ] |
|
A related Github Pull-Request [GH-604] was closed |
[DDC-2335] [GH-603] Add a filter to the import and convert mapping Created: 06/Mar/13 Updated: 09/May/13 Resolved: 09/May/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Invalid | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of nicolasTheodo: Url: https://github.com/doctrine/doctrine2/pull/603 Message: Hi, I needed to import the mapping of an existing database in order to create doctrine2 entities, but when you run the command, it throw an exception on every table without a primary key. I tried to use the filter option, but the error still occurs because the exception was throw in the method which get all the metadata informations. I added a method which get the metadata of some tables according to a filter. What are your thought bout my issue? |
| Comments |
| Comment by Doctrine Bot [ 09/May/13 ] |
|
A related Github Pull-Request [GH-603] was closed: |
[DDC-2334] [GH-602] Added $isIdentifierColumn documentation Created: 06/Mar/13 Updated: 12/Mar/13 Resolved: 12/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Bug | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: | Benjamin Eberlei |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
This issue is created automatically through a Github pull request on behalf of alex88: Url: https://github.com/doctrine/doctrine2/pull/602 Message: I've added the documentation of the argument $isIdentifierColumn since in case of foreign composite keys it doesn't��hydrate more then one row. |
| Comments |
| Comment by Benjamin Eberlei [ 12/Mar/13 ] |
|
A related Github Pull-Request [GH-602] was closed |
[DDC-2333] [GH-601] Add 'contains' comparison Created: 05/Mar/13 Updated: 12/Mar/13 Resolved: 12/Mar/13 |
|
| Status: | Resolved |
| Project: | Doctrine 2 - ORM |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 2.4 |
| Security Level: | All |
| Type: | Improvement | Priority: | Major |
| Reporter: | Benjamin Eberlei | Assignee: |