Skip to content
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

YOrm: Dynamische Return-Types für getRelatedDataset, getRelatedCollection und getRelatedQuery #407

Closed
gharlan opened this issue Mar 17, 2023 · 3 comments · Fixed by #408

Comments

@gharlan
Copy link
Member

gharlan commented Mar 17, 2023

Feature description / Feature Beschreibung

Bei den drei Methoden getRelatedDataset, getRelatedCollection und getRelatedQuery kann leider nicht im Code der genaue Return-Type angegeben werden, da er abhängig ist von den Definitionen in der DB.
https://github.com/yakamara/redaxo_yform/blob/145a52d0b99bd10be9f206ef4ae874771993344a/plugins/manager/lib/yform/manager/dataset.php#L329-L396

Es wäre cool, wenn rexstan die Typen dynamisch ermitteln würde. Dafür müsste rexstan aber die yform-Definitionen auswerten.

class Product extends rex_yform_manager_dataset
{
    public function getCategory(): Category {
        // hier meckert rexstan, weil es nicht wissen kann, dass für Feld category_id eine Relation zur category-Table gesetzt ist
        // und die table wiederum durch die Category-Model-Class repräsentiert wird
        return $this->getRelatedDataset('category_id');
    }
}
@staabm
Copy link
Member

staabm commented Mar 18, 2023

ich sehe dort auch setRelatedCollection, d.h. müsste dieser setter auch den type erzwingen oder kann getRelatedCollection nicht genauer statisch analysiert werden, weil jederzeit jemand via setRelatedCollection beliebiges reinsetzen könnte?

@staabm
Copy link
Member

staabm commented Mar 18, 2023

bitte mal ausprobieren: #408
(konnte es nicht testen)

@gharlan
Copy link
Member Author

gharlan commented Mar 18, 2023

ich sehe dort auch setRelatedCollection, d.h. müsste dieser setter auch den type erzwingen oder kann getRelatedCollection nicht genauer statisch analysiert werden, weil jederzeit jemand via setRelatedCollection beliebiges reinsetzen könnte?

setRelatedCollection ist mehr eine interne Methode, die man normalerweise nicht selbst aufruft. Die wird von populateRelation genutzt.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants