Actualmente esta función funciona: se muestra para un juego específico, cuántos trabajos hay.SQL/Doctrine: Problema de unión izquierda
El problema: si no hay trabajo, el juego no aparece en la lista.
Cómo mostrar el juego incluso si no hay trabajo adjunto?
Gracias
public function getWithGames()
{
$q = $this->createQuery('c')
->leftJoin('c.stJob j')
->where('j.expires_at > ?', date('Y-m-d h:i:s', time()))
->addOrderBy('c.name');
$q->andWhere('j.is_activated = ?', 1);
$q->andWhere('j.is_public = ?', 1);
return $q->execute();
}
Creo que esto realmente no importa ya que es un complemento de la izquierda. así que no importa dónde se aplica la condición. pero mira lo que él define como el problema. si no hay trabajo, no está en la lista. así que quiere un valor agregado donde (los atributos de trabajo público y activado son 1) O (ambos son NULL) ... (lo que sucede si no hay trabajo). la última parte es lo que olvidó –
Importa muchísimo. Hacer un 'O ... cosas es NULL' no es para nada deseable. El propósito de la cláusula 'ON 'es que esas son las condiciones *** usadas para establecer el join ***. Si ninguna fila coincide con esas condiciones, no hay unión, y en el caso de una unión IZQUIERDA, está bien. Tratar de imitar una cláusula 'ON 'con condiciones" NULL "escritas manualmente es feo. Espero que esa no sea la razón de un voto negativo aquí. – VoteyDisciple
eso es totalmente cierto. te di un voto positivo por esto :) lo que no me gustó fue que no es el problema en su código. el problema en su código era un problema puramente semántico de no entender lo que hace realmente una combinación de la izquierda. –