diff --git a/lib/neues_entry.php b/lib/neues_entry.php index 4941029..8551cb8 100644 --- a/lib/neues_entry.php +++ b/lib/neues_entry.php @@ -430,6 +430,37 @@ public static function findByCategory(?int $category_id = null, int $status = 1) return $query->find(); } + + /** + * Findet Einträge nach mehreren Kategorien. + * Finds entries by multiple Categories. + * + * @param string|array|null $category_ids Die IDs der Kategorien als String oder Array. / The IDs of the Categories as a String or Array. + * @param int $status Der Status der Einträge. / The status of the entries. + * @return rex_yform_manager_collection|null Die gefundenen Einträge oder null, wenn keine Einträge gefunden wurden. / The found entries or null if no entries were found. + * + * Beispiel / Example: + * $entries = FriendsOfRedaxo\Neues\Entry::findByCategories('1,2', 1); + * + * @api + */ + public static function findByCategories(string|array|null $category_ids = null, int $status = 1): ?rex_yform_manager_collection + { + $query = self::query()->where('status', $status, '>='); + + if ($category_ids) { + // Wenn es ein String ist, in ein Array umwandeln + if (is_string($category_ids)) { + $category_ids = explode(',', $category_ids); + } + + // whereInList anwenden + $query->whereInList('category_ids', $category_ids); + } + + return $query->find(); + } + /** * Gibt die URL des Eintrags zurück. * Returns the URL of the entry.