Comment faire pour supprimer plusieurs enregistrements à l'aide de Laravel Éloquent

Maintenant de cela, de ce que je vois, doit avoir été simple.

Je veux être en mesure de supprimer plusieurs enregistrements de la base de données. J'ai le id's de tous les dossiers que je souhaite supprimer. J'appelle le resource.destroy itinéraire à l'aide de liste séparée par des virgules de id (id est de postgres type uuid), comme suit:

Request URL:http://foo.app/products/62100dd6-7ecf-4870-aa79-4b132e60c904,c4b369f1-d1ef-4aa2-b4df-b9bc300a4ff5
Request Method:DELETE

Sur l'autre extrémité, mon contrôleur de l'action ressemble à ceci:

public function destroy($id)
{
    try {
        $ids = explode(",", $id);
        $org->products()->find($ids)->delete();
    }
    catch(...) {
    }
}

Cela me donne l'erreur suivante:

BadMethodCallException in Macroable.php line 81:
Method delete does not exist.

in Macroable.php line 81
at Collection->__call('delete', array()) in ProductsController.php line 251
at Collection->delete() in ProductsController.php line 251
at ProductsController->destroy('62100dd6-7ecf-4870-aa79-4b132e60c904,c4b369f1-d1ef-4aa2-b4df-b9bc300a4ff5')

J'ai vérifié que find() est de retourner une collection de products correspondant à l'id spécifié.

Ce qui me manque?

PS:
1. Le modèle Product a plusieurs belongsTo des relations avec d'autres modèles.
2. Le product.destroy code fonctionne très bien si je passe un unique id

MODIFIER
Je suppose que je suis aussi en train d'essayer de comprendre quelle est la différence entre:

$org->products()->find($ids)->delete()

et

$org->products()->whereIn('id', $ids)->get()->delete()

est? De ce que je vois, à la fois find et get sont de retour Collections

Y avait-il quelque chose de pas clair à propos de la documentation? Plus précisément le destroy() méthode?
J'ai été à l'aide de ce thread comme référence. J'ai vu les documents que vous consultez. Je me sens un peu nerveux appel Model::destroy avec l'id de produit car un utilisateur malveillant peut supprimer des produits appartenant à d'autres orgs (orgs a beaucoup de products). Je préfère d'abord trouver les enregistrements (basé sur organization un utilisateur appartient), puis les supprimer. Je pourrais utiliser une boucle for (n des requêtes). J'ai pu également utiliser un delete requête avec in clause. Je me demandais si il y a quelque chose de plus pratique et élégant.
Je n'ai pas résolu encore. Voir mon commentaire ci-dessus pour les solutions que j'ai en tête.
Le problème est, comme quelqu'un l'a mentionné ci-dessous, que vous appelez delete() sur une collection par opposition à l'objet réel lui-même. à l'aide de votre exemple, vous pouvez effectuer les opérations suivantes: $org->products()->find($ids)->each(function($product){ $product->delete(); });

OriginalL'auteur Code Poet | 2016-01-27