Propel/PHP/Mysql question pour vous. J'ai une boîte de recherche qui va chercher des noms dans une table. J'ai besoin de concatuer 2 champs, first_name et last_name, et de faire une chaîne% LIKE% soumise. Tout à propel.Concat (2 champs) LIKE soumis valeur en utilisant Propel/Mysql/PHP
C'est ce que j'ai actuellement:
$custQuery = CustomerQuery::create()
->withColumn("CONCAT(first_name, ' ', last_name)", "full_name")
->where("full_name LIKE %?%", $nameInput);
Cela donne à l'erreur:
Cannot determine the column to bind to the parameter in clause "full_name = ?".
Il est évident que je ne peux pas utiliser la colonne virtuelle dans la déclaration où. Lorsque j'essaie de faire la concat à l'intérieur de l'instruction where, j'obtiens la même erreur.
$custQuery = CustomersQuery::create()
->where("CONCAT(first_name, ' ', last_name) LIKE %?%", $searchStr);
Je préfère éviter de le faire sans paramètres:
$custQuery = CustomersQuery::create()
->where("CONCAT(first_name, ' ', last_name) LIKE %$searchStr%");
Il fonctionne, mais je suis à la recherche d'une méthode plus orientée Propel de le faire. Y a-t-il un moyen de le faire sans une instruction where du tout?
Merci beaucoup!
Je ne sais pas propel mais comme mysql est préoccupant SELECT CONCAT (prénom, "", nom de famille) AS full_name FROM nomtable; Il vous renverra le nom concaténé. –
La dernière requête que j'ai posté est celle sans le "AS". J'utilise cela, et cela fonctionne. Je préfère utiliser la propulsion réelle pour le faire si possible. –
Oui, vous n'utilisez pas 'As' car Propel le fait pour vous. Comme vous avez envoyé full_name comme paramètre à withColumn() –