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

findByCategoryIds() #81

Merged
merged 4 commits into from
Aug 16, 2024
Merged

findByCategoryIds() #81

merged 4 commits into from
Aug 16, 2024

Conversation

skerbis
Copy link
Member

@skerbis skerbis commented Aug 12, 2024

Hinzufügen der findByCategoryIds-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 (string|array|null), um klar anzugeben, welche Typen akzeptiert werden.

Anwendungsbeispiel:

// Suche nach Einträgen, die den Kategorien 1 und 2 zugeordnet sind und den Status 1 oder höher haben
$entries = FriendsOfRedaxo\Neues\Entry:findByCategoryIds([1, 2], 1);

// Suche mit einer kommagetrennten Liste von Kategorien als String
$entries = FriendsOfRedaxo\Neues\Entry::findByCategoryIds('1,2', 1);

// Suche nach allen Einträgen mit einem Status von 1 oder höher, ohne Kategorienfilter
$entries = FriendsOfRedaxo\Neues\Entry:findByCategoryIds(null, 1);

### 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);
```
@skerbis skerbis requested a review from alxndr-w August 12, 2024 13:12
Copy link
Member

@alxndr-w alxndr-w left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@alxndr-w alxndr-w changed the title findByCategories findByCategoryIds() Aug 12, 2024
@alxndr-w
Copy link
Member

Ich habe die Methode noch umbenannt in findByCategoryIds(), da ich hier versuche ein Namensschema innerhalb meiner Addons beizubehalten.

Ich bin mir aber nicht sicher - funktioniert $query->whereInList('category_ids', $category_ids); auch, wenn es sich um eine m:n-Beziehung mit Relationstabelle handelt? Die IDs stehen schließlich nicht wirklich im Feld category_ids.

@alxndr-w alxndr-w self-requested a review August 12, 2024 17:53
Copy link
Member

@alxndr-w alxndr-w left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(siehe Kommentar zuvor - muss erst getestet sein)

@alxndr-w alxndr-w merged commit 01c7f2e into main Aug 16, 2024
1 check passed
@alxndr-w alxndr-w deleted the skerbis-patch-1 branch August 16, 2024 14:46
@skerbis
Copy link
Member Author

skerbis commented Aug 17, 2024

👍🏻

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 this pull request may close these issues.

3 participants