Feature #55959
closedJoins on SubClasses
0%
Description
The Typo3DbBackend Class does not respect the possibility you join a table with the same table. This happens if you use SubClasses which are connected.
An alias should be taken there. I managed to make this work, but its just a very quick and dirty solution. I replaced the backend by a patched, its attached to this issue. Just ignore the other modifications.
The approach is the usage of alias and a additional param in the function for the parent.
The problem occured when i made a query like this
->contains(location.rootline,uid)
where the aggregate i want to filter is a SubClass of the same class my location is a subClass of. So the join looked like
select * from tx_ex_domain_model_object left join tx_ex_domain_model_object on ....
Because SuperClass and SubClasses are a feature of extbase this is a must-have.
Files
Updated by Philipp Wrann almost 11 years ago
Actually this has impact on all kinds of relations to the same model, different example:
query->equals('parent.gender','male');
would result in
select * from person left join person on person.parent = person.uid where person.gender = 'male'
instead of
select * from person left join person as parent on person.parent = parent.uid where parent.gender = 'male'
Updated by André Wuttig over 10 years ago
Is this feature planned for 6.2 release?! We have huge problems because we cannot make custom queries with subclasses of the same type (table)!
I think there are three workarounds:
- we have to build a second table, which have the same structure as the table of the subclass -> prevents alias problem
- we have to make multiple custom queries
- first search the subclass table
- second search the parentclass table with "$query->in(...)"
-> for many records this leads to a big performance problem, because in the first query many results will be possibly instantiated
- we should use this patch
- not good, because we dont know what the side-effects are
I will try the first solution (its overhead but i hope it works!)
Updated by Philipp Wrann over 10 years ago
The attached file is not working very well but having multiple tables sounds like a very bad solution.
I think its absolutely possible to use an alias. you just have to use the property path as key and generate an alias if neccessary (if table has been joined on a different propertypath allready or the root table is the same).
I think its not so much work! You just have to move the while construct, that generates the joins in a method, there you could work with a register.
I set target version to 6.2 because i see this as extbase core functionallity, subclassing and domain model inheritance is possible, so this has to be possible too.
Sadly i dont find time besides my regular work to provide a solution.
Updated by Marc Bastian Heinrichs over 10 years ago
- Status changed from New to Accepted
- Priority changed from Must have to Should have
- Target version changed from 6.2.0 to next-patchlevel
Updated by Alexander Opitz about 10 years ago
- Project changed from 534 to TYPO3 Core
- Category changed from Extbase: Generic Persistence to Extbase
- Status changed from Accepted to New
Updated by Philipp Wrann over 9 years ago
Are there any news on this? We are planning a new version (for cms 7) of some big extension we developed and now we have to dicide if using the domain model inheritence is still an option.
Please send some feedback if any work/planning has taken place here.
thank you.
Updated by Philipp Wrann about 9 years ago
Updated by Mathias Schreiber about 9 years ago
- Target version deleted (
next-patchlevel)
Updated by Mathias Brodala over 8 years ago
André Wuttig wrote:
When do you plan to fix this issue??
When someone confirms that it was already fixed with #27057. :-)
Updated by Susanne Moog over 4 years ago
- Status changed from New to Needs Feedback
From Mathias comment this should have been fixed with #27057 - is this still happening?
Updated by Riccardo De Contardi almost 4 years ago
- Status changed from Needs Feedback to Closed
No feedback since the last 90 days => closing this issue.
If you think that this is the wrong decision or experience the issue again and have more information about how to reproduce your problem, please reopen it or open a new issue with a reference to this one.
Thank you and best regards.