Nous avons une table d'articles et user_id est la clé étrangère
Par exemple, je souhaite choisir des messages pour ces utilisateurs mais je veux que l'utilisateur 1 et 2 n'a que deux messages dans la sortie, pour le reste des utilisateurs il n'y a pas de nombre limité de messages. P> REMARQUE: Les utilisateurs 1 et 2 ne sont pas toujours dans le tableau CODE> $ UTILISATEURS CODE>, et en raison de la condition, l'un ou les deux peut ne pas être dans la matrice. P>
blockQuote> Avez-vous une solution pour moi? p> p>
5 Réponses :
Vous pouvez le faire en utilisant lire plus sur https://laravel.com/docs/5.7/Quiseries P> P> -> prendre () code>
N'est-il pas recommandé d'exécuter des requêtes dans une boucle. Il doit être évité à tout prix.
Dans cette réponse, vous pouvez filtrer le nombre de postes que vous souhaitez obtenir pour le utilisateur 1 code> et
utilisateur 2 code> à l'aide du
-> prendre () code> et le reste prendra tout le post.
@Rehan, o je vois? Mais puis-je demander pourquoi?
Même si cela prend, les requêtes fonctionnent dans une boucle qui doit être évitée.
Si supposons que vous avez 100k lignes, les questions doivent exécuter 100k fois et effets les performances de l'application,
Il est recommandé d'aller chercher les données dans une seule requête puis de la modifier à l'aide de la boucle.
Vérifiez ma réponse pour la solution.
Vous pouvez essayer cette alternative:
Ceci nous n'obtenons pas les deux derniers articles en tant que OP demanda à l'utilisateur [1,2]
@Maraboc merci, laissez-moi vérifier cela
Vous ne pouvez pas y parvenir dans une seule requête, nous devons le prendre séparément comme celui-ci
Vérifiez cela et laissez-moi savoir si cela a été utile @Vajiheh habibi
Merci, laissez-moi vérifier cela
Essayez cette méthode: Si vous souhaitez obtenir le dernier message code> Utiliser cela à la place: P> $posts[] = Post::whereIn('user_id', [1,2])->latest('created_at')->take(2)->get();
Vous pouvez également utiliser le groupe de paramètres comme celui-ci
DB::table('post') ->whereIn('user_id', $users) ->where(function ($query) { $query->whereIn('user_id', [1,2])->limit(2) ->orWhereNotIn('user_id', [1,2]); }) ->get();
Utilisateur 1 et utilisateur 2 Tous les deux auront 2 messages chacun ou ils auront deux messages combinés?
Est-ce toujours 1 et 2 qui doit être limité à deux messages? Et quels posteront-ils les deux premiers postes ou les deux derniers postes?
@Mozammil utilisateur 1 deux messages et utilisateur 2 deux messages au total 4 messages
@Rehan Oui, c'est toujours 1 et 2, et les deux derniers messages de ces utilisateurs doivent être sélectionnés.
Qu'avez-vous essayé? Montrez-nous votre code. donc n'est pas un service d'écriture de code a>.
@ Sickanic je voulais utiliser l'Union, mais comme il a été utilisé pour un autre résultat, j'essaie de trouver une meilleure solution
Montrez-nous votre code. Veuillez visiter le centre d'aide et lire Comment demander et comment créer un Exemple minimal, complet et vérifiable .
@ Sickpanic merci, je vérifierai à nouveau