Récemment, j'ai commencé à coder avec Symfony et Propel 2.x, et je suis tombé sur un problème avec la clause WHERE IN.Propel WHERE dans la clause et la fonction MySQL
Je veux obtenir des clients qui est né en 1993 et 1988.
J'ai écrit ce fragment de code Propel Requête:
$query = ClientQuery::create()
->where('YEAR(Client.Birthdate) IN ?', [1993, 1988])
->find();
... et l'ORM cartographié ces entiers comme objet DateTime , alors regardez la requête finale comme:
SELECT clients.id, clients.user_id, clients.first_name, clients.last_name, clients.birthdate, clients.document_id, clients.street, clients.postal_code, clients.city, clients.country
FROM clients
WHERE YEAR(clients.birthdate) IN ('1970-01-01','1970-01-01')
y at-il moyen d'utiliser Propel pour construire la requête comme ci-dessous, sans utiliser RAW requête SQL?
SELECT clients.id, clients.user_id, clients.first_name, clients.last_name, clients.birthdate, clients.document_id, clients.street, clients.postal_code, clients.city, clients.country
FROM clients
WHERE YEAR(clients.birthdate) IN (1993, 1988)
J'ai essayé d'ajouter YEAR(clients.birthdate)
SELECT avec alias pour, mais aussi je ne peux pas attendre la requête.
Quel type de colonne est birthdate dans la table des clients? Pouvez-vous montrer certaines données stockées int? – m1n0
@ m1n0 cette colonne est de type DATE. Propel pense que je compare les DATE au lieu de INT, donc il jette mes valeurs à l'objet DateTime. – lepsus