Actuellement, j'ai cette variable
$ arrays = implode (",", $ request-> pmChck);
et si j'essaye de renvoyer cette variable. J'obtiendrai ce genre de sortie
2019-100,2018-100
Comme vous pouvez le voir, les valeurs sont séparées par des virgules
Maintenant, dans ma requête laravel, j'essaie d'obtenir tous les enregistrements de l'employé à l'exception de ces deux company_id ci-dessus.
$ pm_selected = DB :: connection ('mysql') -> select ("SELECT * FROM view_employee_info WHERE company_id NOT IN ('". $ arrays. "')"); p>
La requête ne fonctionne pas, elle montre toutes les données ainsi que les données avec company_id de 2019-100 et 2018-100
Il devrait lister toutes les données à l'exception de ces deux company_id 2019-100 et 2018-100
Y a-t-il un problème avec mon format ou ma syntaxe?
3 Réponses :
Le problème dans votre requête concerne les guillemets simples dans la partie IN.
Si vous passez de
SELECT * FROM table WHERE company_id IN ('123, 234')
à
$pm_selected = DB::connection('mysql')->select("SELECT * FROM view_employee_info WHERE company_id NOT IN(".$arrays.")");
Votre réseau implosé ressemble à
2019-100, 2018-100
et la requête aussi:
SELECT * FROM view_employee_info WHERE company_id NOT IN('2019-100', '2018-100')
essayez d'imploser comme ceci:
implode("', '", $arr)
Et la requête sera ok:
SELECT * FROM view_employee_info WHERE company_id NOT IN('2019-100, 2018-100')
J'ai lié ce implode ("','", $ arr) en fonction de votre réponse et cela fonctionne très bien. Merci!
Heureux de vous aider ^ _ ^
En supposant que $ request-> pmChck est un tableau d'entreprises que vous souhaitez exclure, la requête sera:
DB::table(..)->select(..)->whereNotIn('company_id', $request->pmChck)->get();
Lorsque vous mettez une chaîne séparée par des virgules entre guillemets, vous ne transmettez qu'une seule valeur.
NOT IN ()traite une seule entrée, mais vous voulez en nourrir deux. Vous devez citer chaque entrée de la liste. Je vais trouver un duplicata pour terminer.