Dans la banque de données App Engine, l'exécution d'une requête "IN" avec une tranche d'entiers n'est pas directement prise en charge à l'aide de l'outil Fonction de filtre. Cependant, plusieurs approches peuvent être utilisées pour obtenir des fonctionnalités similaires.
Une option consiste à créer une requête distincte pour chaque élément de la tranche entière. Cette approche convient si le nombre d'éléments est relativement petit.
<code class="go">ids := []int64{1, 2, 3, 4} var q datastore.Query for _, id := range ids { q = q.Filter("Id =", id) }</code>
Si les éléments de la tranche entière représentent une plage continue, vous pouvez utilisez les opérateurs de plage (>= et <=) pour remplacer le filtre IN.
<code class="go">ids := []int64{1, 2, 3, 4} q := datastore.NewQuery("Category"). Filter("Id >=", 1). Filter("Id <=", 4)</p> <h3>Approche 3 : GetMulti pour la requête Key IN</h3> <p>Si la propriété filtrée est la clé d'entité , vous pouvez utiliser la fonction datastore.GetMulti() pour récupérer plusieurs entités en fonction d'un tableau de clés.</p> <pre class="brush:php;toolbar:false"><code class="go">var keys []*datastore.Key for _, id := range ids { keys = append(keys, datastore.NewKey(c, "Category", "", id, nil)) } categories := make([]Category, len(keys)) err := datastore.GetMulti(c, keys, categories)</code>
Remarque :
La deuxième approche utilisant plusieurs Le filtre des appels ne fonctionne pas correctement. L'application de plusieurs filtres de cette manière entraîne une connexion ET logique, et aucune entité ne satisfera probablement toutes les conditions simultanément.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!