IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ORM PHP Discussion :

IS NULL en LIKE NULL, non merci ! [Doctrine]


Sujet :

ORM PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut IS NULL en LIKE NULL, non merci !
    Bien le bonjour,

    Après une recherche infructueuse dans cette section du forum, je prends mon courage à deux mains pour vous demander une broutille bien placée et qui me coince donc...

    Avant tout :
    - Doctrine, c'est fou
    - Relations super bien gérées
    - ...
    Histoire que l'on ne croît pas le contraire de ma part o_O

    Voici donc la requête en espoir d'effectuer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $this->byMember = Doctrine_Query::create()
                                ->from('T_Debit d')
                                ->where('d.CodeId IN ('.implode(',', $advCodes).')')
                                ->andWhere('d.Email IS NULL');
            die($this->byMember->getSqlQuery());
    Donc, que Doctrine s'occupe de transformer les requêtes d'une écriture simplifiée à une requête de bourrin et qui fonctionne, c'est top. Mais là, il veut absolument transformer mon "IS NULL" en "LIKE NULL" dans la requête.

    Peut-être qu'en MySQL, ce dernier se sentira aussi bien sauf qu'ici je suis avec SQL Server et "LIKE NULL" ne me retourne aucun résultat contrairement à mon bienfaiteur "IS NULL".

    Ma question, toute bénine qui soit, est donc : Comment dire à Doctrine si j'ai écris "IS NULL" alors stp laisse-le moi ?

    Je crise intérieurement sur ce mini problème, pouvez-vous m'aider à sortir de la crise ?

    En vous remerciant d'avance.

    Cordialement,

  2. #2
    Invité
    Invité(e)
    Par défaut Il parle de plusieurs manières, mais différentes v_v'
    De nouveau bonjour,

    Petite entreprise ne connaît pas la crise... pour peu que l'on sache comment parler aux gens qui y habitent !

    Hum, bref, en checkant une autre forme d'écriture je suis maintenant au bout de ma faim, mais reste à savoir pourquoi cela marche dans un sens et pas dans l'autre ?...

    Voici la solution pour éviter que Doctrine ne vous transforme un "IS NULL" en "LIKE NULL" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Doctrine::getTable('T_Debit')->createQuery('t')
                                ->where('CodeId IN ('.implode(',', $advCodes).')')
                                ->andwhere('Email IS NULL')
                                ->count();
    Donc Doctrine::getTable('T_Debit')->createQuery('t') à la place de Doctrine_Query::create(), voilà, voilà.

    En vous souhaitant du bon courage avec Doctrine qui dès fois se la joue un soupçon perso, en soit.

    Une bonne journée à vous.

    Cordialement,

  3. #3
    Invité
    Invité(e)
    Par défaut Rien à faire...
    De nouveau bonjour,

    Finalement, même la solution proposée n'est pas bonne (grosse incompréhension ).

    Voici donc la solution "Lance-roquettes pour dégommer la mouche" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $con = Doctrine_Manager::getInstance()->connection();
    $st = $con->execute("
        SELECT ...
        FROM ...
        WHERE Email IS NULL 
    ");
    $fetch= $st->fetchAll();
    Le voilà le fameux "Laisses-moi tranquille" façon Doctrine.

    Si ça peux aider...

    Une bonne journée à vous.

    Cordialement,

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 534
    Par défaut
    oui j'ai souvent le problème ou je m'aperçoit que Doctrine ne sait pas faire.

  5. #5
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Il est logique que tes deux syntaxes retourne le même résultat, en fait, le getTable() fait la même chose que ton code initial...

    Quel est le paramètrage de connexion à ta base ? Précise-t-il bien que tu utilise SQL Server ?

    J'ai exploré le code de génération qui transforme le DQL en SQL, tu as un objet, le Doctrine_Expression_Driver qui transforme le code DQL en SQL, la version de base tranforme le "IS NULL" en "IS NULL"... L'objet Doctrine_Expression_Mssql utilisé pour créer une requête avec MS SQL ne modifie pas ce code (pas plus que celui de MySql) ????

    Je ne vois pas d'où pourrait venir un LIKE NULL il n'y a aucune transformation, dans toute la génération de DQL en SQL qui dirige vers un LIKE NULL... en fait un find ne retourne aucun fichier...

    Donc, d'où vient donc ce LIKE NULL ?

    essayes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ->andwhere('Email is null')
    ce pourrait juste être un problème de taille !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Subreport renvoie null : parfois oui, parfois non
    Par Grobim dans le forum iReport
    Réponses: 14
    Dernier message: 21/01/2013, 15h57
  2. NULL ET LIKE
    Par rvaouate dans le forum Développement
    Réponses: 11
    Dernier message: 02/02/2009, 18h25
  3. Réponses: 3
    Dernier message: 19/02/2007, 15h07
  4. [RSExecute] null mais pas null.......
    Par Nadine dans le forum ASP
    Réponses: 7
    Dernier message: 11/02/2005, 17h40
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo