2 votes

Ignorer une catégorie inexistante

Attacher plusieurs catégories à un article en utilisant :

public static function setCategory(Request $request) {

        $article = Article::where('id', $request->article_id)->first();

        $categories_ids = json_decode($request->categories_ids);

        $article->categories()->attach($categories_ids);
}

Supposons que nous entrons dans le tableau [1, 2, 3, 4], et que dans celui-ci 4 est une catégorie inexistante. Comment s'assurer que toutes les catégories existantes sont ajoutées et que la catégorie 4 est simplement ignorée ?

2voto

Robo Robok Points 4217

Si vous voulez le faire d'une manière élégante, je ferais ceci :

$article = Article::findOrFail($request->article_id);
$requestedCategoriesIds = json_decode($request->categories_ids);
$keyName = (new Category())->getKeyName();
$existingCategoriesIds = Category
    ::whereKey($requestedCategoriesIds)
    ->pluck($keyName);

$article->categories()->attach($existingCategoriesIds);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X