Don't add BelongsToMany relation column to select #2721
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.
It seems like a part of "duplicate column" problems with sorting/filtering by BelongsToMany relation column are coming from this.
When you have same column names in your main and relation tables adding a
->select()
is not helping because the relation column is still added in joinEagerLoadedColumn(). And depending on the situation either your main model column will be populated with same name relation column or you're getting an error in your aggregate queries. Example:(
crm_companies
.name
is the main model column,dic_company_types
.name
- automatically added relation column and hence the conflict)So I look into the code and found this place.
$this->performJoin($table, $foreign, $other);
looks unnecessary since it's performed anyway after the switch block andaddSelect
is adding a relation column that doesn't seem to be required and causes duplicates. Please correct me if I'm wrong.Thanks