Pregunta

I tiene una acción con dos peticiones sobre una mesa única. Los resultados de las solicitudes deben ser diferentes.

Sin embargo, el resultado es el mismo para mis dos solicitudes y se trata de mi segunda petición.

    // 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();
¿Fue útil?

Solución 2

Es tal vez no sea la mejor manera, pero tengo que resolver el problema de seleccionar todas las filas de mi mesa en una petición, y después de, I ordenar los resultados usando PHP

Otros consejos

Comparación de las dos consultas que genera. No sé cómo se puede lograr esto en Doctrina 1. En Doctrina 2 puede activar un registrador, por lo que todo SQL ejecutada se para, por ejemplo, la salida estándar.

Una otra cosa.

Cuando se utiliza la fecha y hora actual en una consulta que shoud definir una variable con la fecha y hora actual y el uso de esta variable en ambas consultas. En este caso, sería algo como:

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

No puede haber un retraso de (más de) un segundo entre la ejecución de los dos estados, lo que hace que sus consultas no fiable.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top