/** * Gets a collection of AbsenceEleveTraitement objects related by a many-to-many relationship * to the current object by way of the j_traitements_saisies cross-reference table. * * ajout d'un join pour recuperer les types en meme temps que les traitements * * If the $criteria is not null, it is used to always fetch the results from the database. * Otherwise the results are fetched from the database the first time, then cached. * Next time the same method is called without $criteria, the cached collection is returned. * If this AbsenceEleveSaisie is new, it will return * an empty collection or the current collection; the criteria is ignored on a new object. * * @param Criteria $criteria Optional query object to filter the query * @param PropelPDO $con Optional connection object * * @return PropelCollection|array AbsenceEleveTraitement[] List of AbsenceEleveTraitement objects */ public function getAbsenceEleveTraitements($criteria = null, PropelPDO $con = null) { if(null === $this->collAbsenceEleveTraitements || null !== $criteria) { if ($this->isNew() && null === $this->collAbsenceEleveTraitements) { // return empty collection $this->initAbsenceEleveTraitements(); } else { if ($this->collJTraitementSaisieEleves === null || null !== $criteria) { if (null !== $criteria) { return AbsenceEleveTraitementQuery::create(null, $criteria) ->filterByAbsenceEleveSaisie($this) ->find($con); } else { //on utilise du sql directement pour optimiser la requete //WARNING WARNING WARNING WARNING //si le modele change ca va bugger, il faut utiliser la requete AbsenceEleveTraitementQuery en dessous //le sql a ete generer en activant les logs propel et en recuperant le sql de la requete plus bas $sql = "SELECT /* comment_getAbsenceEleveTraitements */ a_traitements.ID, a_traitements.UTILISATEUR_ID, a_traitements.A_TYPE_ID, a_traitements.A_MOTIF_ID, a_traitements.A_JUSTIFICATION_ID, a_traitements.COMMENTAIRE, a_traitements.MODIFIE_PAR_UTILISATEUR_ID, a_traitements.CREATED_AT, a_traitements.UPDATED_AT, a_traitements.DELETED_AT, a_types.ID, a_types.NOM, a_types.JUSTIFICATION_EXIGIBLE, a_types.SOUS_RESPONSABILITE_ETABLISSEMENT, a_types.MANQUEMENT_OBLIGATION_PRESENCE, a_types.RETARD_BULLETIN, a_types.MODE_INTERFACE, a_types.COMMENTAIRE, a_types.ID_LIEU, a_types.SORTABLE_RANK, a_types.CREATED_AT, a_types.UPDATED_AT, a_notifications.ID, a_notifications.UTILISATEUR_ID, a_notifications.A_TRAITEMENT_ID, a_notifications.TYPE_NOTIFICATION, a_notifications.EMAIL, a_notifications.TELEPHONE, a_notifications.ADR_ID, a_notifications.COMMENTAIRE, a_notifications.STATUT_ENVOI, a_notifications.DATE_ENVOI, a_notifications.ERREUR_MESSAGE_ENVOI, a_notifications.CREATED_AT, a_notifications.UPDATED_AT, a_justifications.ID, a_justifications.NOM, a_justifications.COMMENTAIRE, a_justifications.SORTABLE_RANK, a_justifications.CREATED_AT, a_justifications.UPDATED_AT FROM `a_traitements` INNER JOIN j_traitements_saisies ON (a_traitements.ID=j_traitements_saisies.A_TRAITEMENT_ID) LEFT JOIN a_types ON (a_traitements.A_TYPE_ID=a_types.ID) LEFT JOIN a_notifications ON (a_traitements.ID=a_notifications.A_TRAITEMENT_ID) LEFT JOIN a_justifications ON (a_traitements.A_JUSTIFICATION_ID=a_justifications.ID) WHERE j_traitements_saisies.A_SAISIE_ID='".$this->getId()."' and a_traitements.DELETED_AT IS null"; $con = Propel::getConnection(AbsenceEleveTraitementPeer::DATABASE_NAME, Propel::CONNECTION_READ); $stmt = $con->prepare($sql); $stmt->execute(); $this->collAbsenceEleveTraitements = AbsenceEleveSaisie::getTraitementFormatter()->format($stmt); // Cette requete est celle faite avec l'objet query, utile si on veut récupérer le sql pour la requete manuelle ci-dessus // $this->collAbsenceEleveTraitements = AbsenceEleveTraitementQuery::create() // ->setComment('comment_getAbsenceEleveTraitements') // ->useJTraitementSaisieEleveQuery()->filterByASaisieId($this->getId())->endUse() // ->leftJoinWith('AbsenceEleveType') // ->leftJoinWith('AbsenceEleveNotification') // ->leftJoinWith('AbsenceEleveJustification') // ->find(); // DEBUG // foreach ($this->collAbsenceEleveTraitements as $traitement) { // echo $this->getId().'sql $traitement->isTypeHydrated() : '.$traitement->isTypeHydrated().'<br/>'; // echo $this->getId().'sql $traitement->isNotificationHydrated() : '.$traitement->isNotificationHydrated().'<br/>'; // echo $this->getId().'sql $traitement->isJustificationHydrated() : '.$traitement->isJustificationHydrated().'<br/>'; // } } } else { $this->collAbsenceEleveTraitements = new PropelObjectCollection(); $this->collAbsenceEleveTraitements->setModel('AbsenceEleveTraitement'); foreach ($this->collJTraitementSaisieEleves as $jTraitementSaisieEleve) { if ($jTraitementSaisieEleve->getAbsenceEleveTraitement() !== null && $jTraitementSaisieEleve->getAbsenceEleveTraitement()->getDeletedAt()==Null) { $this->collAbsenceEleveTraitements->append($jTraitementSaisieEleve->getAbsenceEleveTraitement()); } } // DEBUG // foreach ($this->collAbsenceEleveTraitements as $traitement) { // echo $this->getId().'collJ $traitement->isTypeHydrated() : '.$traitement->isTypeHydrated().'<br/>'; // echo $this->getId().'collJ $traitement->isNotificationHydrated() : '.$traitement->isNotificationHydrated().'<br/>'; // echo $this->getId().'collJ $traitement->isJustificationHydrated() : '.$traitement->isJustificationHydrated().'<br/>'; // } } } } return $this->collAbsenceEleveTraitements; }