New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Avoid generating association if table object or database table exist #842
Conversation
@@ -346,11 +346,18 @@ public function findBelongsTo(Table $model, array $associations): array | |||
]; | |||
} else { | |||
$tmpModelName = $this->_modelNameFromKey($fieldName); | |||
if (!in_array(Inflector::tableize($tmpModelName), $this->_tables, true)) { | |||
$associationTable = $this->getTableLocator()->get($tmpModelName); | |||
$tables = $this->listAll(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You should be able to use $this->_tables
here as it was used here before.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
listAll() returns the value of $_tables if it's already populated else fetches the list from the db. I think using the method is fine here. That way it doesn't need to rely on listAll() being called before this method is invoked.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's correct. I initially used $this->_tables but found unit tests failed when findBelongsTo was called isolated. generateAssociations calls listAll as well as findHasMany and findBelongsToMany methods but findBelongsTo didn't.
This PR fixes #839 and #834 . Please check and let me know if any change is needed.
Thank you