Question

J'ai une action avec deux requêtes sur une table unique. Les résultats des demandes doivent être différentes.

Mais, le résultat est le même pour mes deux demandes et il vient de ma deuxième demande.

    // Récupération du (ou des) locataire(s) actuel(s) du logement
    $this->locataires = Doctrine_Query::create()
      ->from('logement l')
      ->leftJoin('l.Bail b')
      ->leftJoin('b.Locataire')
      ->where('l.id = ?', $request->getParameter('id'))
      ->andWhere('(b.datefin >= ?', date('Y-m-d', time()))
      ->orWhere("b.datefin = '0000-00-00')")
      ->execute();

    // Récupération du (ou des) locataire(s) précédent(s) du logement
    $this->locatairesprec = Doctrine_Query::create()
      ->from('logement l')
      ->leftJoin('l.Bail b')
      ->leftJoin('b.Locataire')
      ->where('l.id = ?', $request->getParameter('id'))
      ->andWhere('b.datefin < ?', date('Y-m-d', time()))
      ->andWhere("b.datefin != '0000-00-00'")
      ->orderBy('datedeb')
      ->execute();
Était-ce utile?

La solution 2

Il peut-être pas la meilleure façon, mais je dois résoudre le problème pour sélectionner toutes les lignes de ma table dans une demande, et après, je trier les résultats en utilisant PHP

Autres conseils

Comparez les deux requêtes qu'il génère. Je ne sais pas comment vous pouvez accomplir cela dans Doctrine 1. Dans Doctrine 2, vous pouvez activer un enregistreur, de sorte que tous SQL exécuté sera écrit, par exemple, la sortie standard.

Une autre chose.

Lorsque vous utilisez l'horodatage en cours dans une requête vous shoud définir une variable avec l'horodatage en cours et utiliser cette variable dans les deux requêtes. Dans ce cas, il serait quelque chose comme:

$currentTime = time();

// Récupération du (ou des) locataire(s) actuel(s) du logement
$this->locataires = Doctrine_Query::create()
  ->from('logement l')
  ->leftJoin('l.Bail b')
  ->leftJoin('b.Locataire')
  ->where('l.id = ?', $request->getParameter('id'))
  ->andWhere('(b.datefin >= ?', $currentTime)
  ->orWhere("b.datefin = '0000-00-00')")
  ->execute();

// Récupération du (ou des) locataire(s) précédent(s) du logement
$this->locatairesprec = Doctrine_Query::create()
  ->from('logement l')
  ->leftJoin('l.Bail b')
  ->leftJoin('b.Locataire')
  ->where('l.id = ?', $request->getParameter('id'))
  ->andWhere('b.datefin < ?', $currentTime)
  ->andWhere("b.datefin != '0000-00-00'")
  ->orderBy('datedeb')
  ->execute();

Il peut y avoir un délai de (plus) une seconde entre l'exécution des deux déclarations, ce qui rend vos requêtes peu fiables.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top