1
votes

Requête Laravel: Php implode les valeurs de chaîne de tableau

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. "')");

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?


1 commentaires

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.


3 Réponses :


1
votes

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.")");


0 commentaires

3
votes

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')


2 commentaires

J'ai lié ce implode ("','", $ arr) en fonction de votre réponse et cela fonctionne très bien. Merci!


Heureux de vous aider ^ _ ^



4
votes

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();


0 commentaires