[5.4] Fix bug related to sub select queries and extra select statements.#19013
Merged
taylorotwell merged 1 commit into5.4from May 1, 2017
unknown repository
Merged
[5.4] Fix bug related to sub select queries and extra select statements.#19013taylorotwell merged 1 commit into5.4from unknown repository
taylorotwell merged 1 commit into5.4from
unknown repository
Conversation
The sub select query must have only one selected column otherwise sql will throw an error. If a sub select function (e.g. withCount) is called with a model that has select queries as a global scope this will cause the error.
Contributor
|
Can you show a code example where this occurs? How would I replicate the error? |
Author
|
I'll give the example that lead me to find the bug. Now lets say you want to retrieve the users with their thread count: That code will then produce the following error: I wrote a test which produces the invalid query in the commit. |
This was referenced Feb 28, 2018
taylorotwell
pushed a commit
that referenced
this pull request
Mar 1, 2018
…3357) A previous pull request #19013, which aimed to solve the issue of multiple select statements causing an SQL error within a withCount function, assumed a sub query would only need one select statement. This is not the case, so the code that removes excess filters is moved to the withCount method where the sub query does only need one select.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The sub select query must have only one selected column otherwise sql
will throw an error.
If a sub select function (e.g. withCount) is called with a model that
has select queries as a global scope this will cause the error.
The first column is the intended column for the sub select. Any global scope columns will be added after that. To avoid the error the columns array is reduced to just the first column.
This fix only applies to global scopes that use addSelect/selectRaw/withCount. If the select function is used it will replace all the columns and the sub select will return the first column in that select statement.