THELIA Forum

Welcome to the THELIA support and discusssion forum

Announcement

Rejoignez la communauté sur le Discord Thelia : https://discord.gg/YgwpYEE3y3

Offline

#1 Requete pour une Loop

(30-05-2016 14:55:26)


Bonjour,

Dans ma Loop j'aimerai executer cette requete

$date = '2016-05-29';

(SELECT * FROM `table_shedules` A where 
    NOT EXISTS (
       SELECT `day` FROM `table_shedules` B where (B.`period_begin` <= '$date' AND B.`period_end` >= '$date') AND B.`day`= A.`day`) AND ((A.`period_begin` IS NULL) AND (A.`period_end` IS NULL))
)
   UNION (
       SELECT * FROM `table_shedules` C where (C.`period_begin` <= '$date' AND C.`period_end` >= '$date')
 )

cette requete fonctionne sous phpMyadmin mais je ne vois pas comment l'ecrire dans ma loop
une piste ?

Merci

Offline

#2 Re: Requete pour une Loop

(31-05-2016 12:19:21)


Bonjour,

J'ai pas mal avancé
mais je reste bloqué sur l'UNION
Est il possible de faire cela sous Propel ? Comment ?
je ne trouve rien a ce sujet

Merci

Offline

#3 Re: Requete pour une Loop

(31-05-2016 12:48:44)


Tu peux sûrement simplifier cette requête.

C'est quoi l'objectif ?


OpenStudio Toulouse

Offline

#4 Re: Requete pour une Loop

(31-05-2016 12:56:23)


Je suis arrivé à ça

$queryC = DealerShedulesQuery::create('C')
    ->where('C.period_begin <= ?', $search_date)
    ->where('C.period_end >= ?', $search_date);

$queryA = DealerShedulesQuery::create('A')
    ->filterByDay(
        DealerShedulesQuery::create('B')
            ->select('day')
            ->condition('condB1', 'B.period_begin <= ?', $search_date)
            ->condition('condB2', 'B.period_end >= ?', $search_date)
            ->combine(array('condB1', 'condB2'), 'and', 'condB12')
            ->condition('condB4', 'B.closed = ?', false)
            ->where(array('condB12','condB4'),'and')
            ->find()
        ,
        Criteria::NOT_IN
    )
    ->_and()
    ->filterByClosed('0')
    ->filterByPeriodNull()
    ->filterByDealerId($this->getDealerId());

$query = $queryA; //.' UNION '.$queryC;//

return $query;

je cherche en une seule requete sortir les horaires d'ouverture du magasin

pour que la requete soit correcte
je doit faire une UNION de $querA et $queryC

Last edited by zzuutt (31-05-2016 12:59:10)

Offline

#5 Re: Requete pour une Loop

(31-05-2016 13:49:55)


Parfois, ça ne vaut pas le coup de se compliquer la vie: http://propelorm.org/documentation/03-b … custom-sql


OpenStudio Toulouse

Offline

#6 Re: Requete pour une Loop

(31-05-2016 13:54:41)


Merci Roadster31
Je l'ai regarde aussi mais je ne suis pas arrive a le mettre en place dans la loop

Offline

#7 Re: Requete pour une Loop

(19-07-2016 05:47:44)


Hello,
Je me greffe sur la discussion pour savoir comment exécuter des requetes perso avec Propel.
Je n'ai pas réussit à cumuler des critères du genre

$fooDegressif = DegressifProductsQuery::create()->findByProductId($product_id)->filterByTranchemin(array('min' => $quantite))->findOne();

Aussi, je préférerais réussir à faire du SQL.

$sql="SELECT prix, prix2 FROM degressif_products WHERE product_id = '".$product_id."'";
$sql.=" AND tranchemin >".$quantite;
$sql.=" ORDER BY tranchemin ASC";
$fooDegressif = $con->prepare($sql);
$fooDegressif = $con->execute();

Je pense que le problème vient de con. quelle interface doit on utiliser pour y avoir accès ?


W-Prog - Développement site internet

Offline

#8 Re: Requete pour une Loop

(19-07-2016 06:28:24)


Elle a l'air Ok ta requête propel, mis a part le findOne(), c'est sans doute un find() qu tu veux faire.


OpenStudio Toulouse

Offline

#9 Re: Requete pour une Loop

(19-07-2016 06:31:21)


Non ma requete n'était pas correcte, voici la correction :

$fooDegressif = DegressifProductsQuery::create()
                    ->filterByProductId($product_id)
                    ->filterByTranchemin(array('min' => $quantite))
                    ->orderBy("trancheMin", "ASC")
                    ->find();

Particulièrement sur filterByProductId et non find....
et le find au lieu du findOne effectivement.
Pourtant, je ne veux qu'une seule ligne.
J'y ai ajouté le orderBy

En revanche, le ->filterByTranchemin(array('min' => $quantite)) renvoie les valeurs égales, n'existe il pas de strictement supérieur ?

Last edited by w-prog (19-07-2016 06:34:14)


W-Prog - Développement site internet

Offline

#10 Re: Requete pour une Loop

(19-07-2016 17:57:14)


Lis la doc Propel...


OpenStudio Toulouse