Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
### Hinzufügen der `findByCategories`-Methode zur `Entry`-Klasse #### Zusammenfassung: In diesem Pull Request wird eine neue Methode `findByCategories` zur `Entry`-Klasse hinzugefügt. Diese Methode ermöglicht es, Einträge anhand einer oder mehrerer Kategorien zu finden, wobei der Status der Einträge ebenfalls berücksichtigt wird. Die Methode akzeptiert sowohl Strings als auch Arrays als Eingabeparameter für die Kategorie-IDs und ist kompatibel mit PHP 8.2. #### Änderungen im Detail: - **Neue Methode `findByCategories`:** - **Parameter**: - `string|array|null $category_ids`: Akzeptiert entweder eine kommagetrennte Liste von Kategorie-IDs als String, ein Array von Kategorie-IDs oder `null`. - `int $status`: Definiert den Mindeststatus der Einträge, die gefiltert werden sollen. - **Funktionalität**: - Wenn ein String übergeben wird, wird dieser in ein Array umgewandelt. - Die Methode verwendet `whereInList`, um die Einträge zu filtern, die den angegebenen Kategorien zugeordnet sind. - Es wird der `status` der Einträge berücksichtigt, sodass nur Einträge zurückgegeben werden, die einen bestimmten Status erfüllen. - **Typdeklaration**: - Die Methode nutzt die neuen Union Types von PHP 8.2 (`string|array|null`), um klar anzugeben, welche Typen akzeptiert werden. #### Anwendungsbeispiel: ```php // Suche nach Einträgen, die den Kategorien 1 und 2 zugeordnet sind und den Status 1 oder höher haben $entries = FriendsOfRedaxo\Neues\Entry::findByCategories([1, 2], 1); // Suche mit einer kommagetrennten Liste von Kategorien als String $entries = FriendsOfRedaxo\Neues\Entry::findByCategories('1,2', 1); // Suche nach allen Einträgen mit einem Status von 1 oder höher, ohne Kategorienfilter $entries = FriendsOfRedaxo\Neues\Entry::findByCategories(null, 1); ```
- Loading branch information
bc0f4ee
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.
@skerbis Moin, da stimmt was nicht. @christophboecker hat schon ein FIXME-Kommentar mit Vorschlag, wie es hätte heißen müssen. Kannst du das prüfen und korrigieren?
bc0f4ee
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.
whereInList
weil meine IDE zu recht sagt: die Methode gibt es nicht. Muss wohlwhereListContains
heißen; das ist der einzige Methoden-Name inrex_yform_manager_collection
, der passt.findXxxx
) bzw. diefindByCategoryIds
zu erweitern. Dann wäre aber der Name zu speziell (was allgemeines wiefindBy
fände ich eher passend. Aber das ist nicht das Kernproblem.null
als zusätzlichen "keine Angabe"-Typ. Ich versuche es nun ohnenull
zu lösen. Siehe Neue Methode Entry::collection() #97. (public static function collection(int|array $category = [], int $status = 1, string|int $language = 0): rex_yform_manager_collection
).bc0f4ee
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.
Vorschlag für eine ganz allgemein gehaltene Methode, die dann von anderen, spezielleren Methoden benutzt werden könnte:
Die Kategorie als int-Wert für eine oder als Liste mehrerer Kategorien; default wäre "keine Einschränkung"
Der Status als bool hätte die Bedeutung "true = online" bzw. "false = offline" oder als int-Wert der konkrete Status; default wäre hier "alle" symbolisiert durch PHP-INT-MIN
Die Sprache entweder als Name (z.B. "de") oder als ID des Datensatzes. Default 0 bedeutet "keine Einschränkung"
bc0f4ee
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.
https://github.com/FriendsOfREDAXO/neues/commits/bc0f4eed8d4c8fbd8903f6f643f179fab7410340/
Hier schwirrt er umher, kein PR - direkt commited.