Derniers messages sur Zeste de Savoirhttps://zestedesavoir.com/forums/2016-04-06T15:46:14+02:00Les derniers messages parus sur le forum de Zeste de Savoir.Recuperer les commentairess entre deux date, message #1051912016-04-06T15:46:14+02:00artragis/@artragishttps://zestedesavoir.com/forums/sujet/5760/recuperer-les-commentairess-entre-deux-date/?page=1#p105191<p>Ok. BIen vu pour le <code>current_date</code> !</p>Recuperer les commentairess entre deux date, message #1051902016-04-06T15:26:54+02:00darkiron/@darkironhttps://zestedesavoir.com/forums/sujet/5760/recuperer-les-commentairess-entre-deux-date/?page=1#p105190<p>Bon, j'ai trouvé les solution : </p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13
14</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="cp"><?php</span>
<span class="k">return</span> <span class="nv">$this</span><span class="o">-></span><span class="na">createQueryBuilder</span><span class="p">(</span><span class="s1">'a'</span><span class="p">)</span>
<span class="o">-></span><span class="na">select</span><span class="p">(</span><span class="s1">'a'</span><span class="p">)</span>
<span class="o">-></span><span class="na">leftJoin</span><span class="p">(</span><span class="s1">'a.replies'</span><span class="p">,</span><span class="s1">'r'</span><span class="p">,</span><span class="s1">'WITH'</span><span class="p">,</span> <span class="s1">'r.date BETWEEN :date AND :now'</span><span class="p">)</span>
<span class="o">-></span><span class="na">addSelect</span><span class="p">(</span><span class="s1">'r'</span><span class="p">)</span>
<span class="o">-></span><span class="na">where</span><span class="p">(</span><span class="s1">'a.publish BETWEEN :date AND :now OR a.modification BETWEEN :date AND :now '</span><span class="p">)</span>
<span class="o">-></span><span class="na">andWhere</span><span class="p">(</span><span class="s1">'a.workspace IN (:follow)'</span><span class="p">)</span>
<span class="c1">//->andWhere('r.date BETWEEN :date AND :now')</span>
<span class="o">-></span><span class="na">setParameter</span><span class="p">(</span><span class="s1">'follow'</span><span class="p">,</span> <span class="nv">$follow</span><span class="p">)</span>
<span class="o">-></span><span class="na">setParameter</span><span class="p">(</span><span class="s1">'date'</span><span class="p">,</span> <span class="nv">$dateD</span><span class="p">)</span>
<span class="o">-></span><span class="na">setParameter</span><span class="p">(</span><span class="s1">'now'</span><span class="p">,</span> <span class="k">new</span> <span class="nx">\DateTime</span><span class="p">(</span><span class="s1">'now'</span><span class="p">))</span>
<span class="o">-></span><span class="na">orderBy</span><span class="p">(</span><span class="s1">'a.modification'</span><span class="p">,</span> <span class="s1">'desc'</span><span class="p">)</span>
<span class="o">-></span><span class="na">getQuery</span><span class="p">()</span>
<span class="o">-></span><span class="na">getResult</span><span class="p">();</span>
</pre></div>
</td></tr></table>
<p>Tous simplement que current_date donne lieu à de nombreuse erreurs.
J'ai utilisé :now ! Tous va bien. Merci </p>Recuperer les commentairess entre deux date, message #1051832016-04-06T13:38:37+02:00darkiron/@darkironhttps://zestedesavoir.com/forums/sujet/5760/recuperer-les-commentairess-entre-deux-date/?page=1#p105183<p>ça ne marche pas j'ai aucun résultats ! ce n'est pas ce que j'attends.
Certes c'est moins lisible, mais sans expr tu sais que ça marche.</p>Recuperer les commentairess entre deux date, message #1051812016-04-06T12:48:46+02:00artragis/@artragishttps://zestedesavoir.com/forums/sujet/5760/recuperer-les-commentairess-entre-deux-date/?page=1#p105181<p>L'utilisation de OR dans une requête sans le moindre parenthésage est souvent lieu à de nombreuse erreurs.</p>
<p>J'ai donc tendance à penser que tu devrais utiliser le query-builder pour faire ton OR afin que tout soit correct.</p>
<figure><table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="cp"><?php</span>
<span class="nv">$queryBuilder</span> <span class="o">=</span> <span class="nv">$this</span><span class="o">-></span><span class="na">createQueryBuilder</span><span class="p">(</span><span class="s1">'a'</span><span class="p">);</span>
<span class="nv">$queryBuilder</span><span class="o">-></span><span class="na">select</span><span class="p">(</span><span class="s1">'a'</span><span class="p">)</span>
<span class="o">-></span><span class="na">leftJoin</span><span class="p">(</span><span class="s1">'a.replies'</span><span class="p">,</span><span class="s1">'r'</span><span class="p">,</span><span class="s1">'WITH'</span><span class="p">,</span> <span class="s1">'r.date BETWEEN :date AND CURRENT_DATE()'</span><span class="p">)</span><span class="o">-></span><span class="na">set</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="nv">$dateD</span><span class="p">)</span>
<span class="o">-></span><span class="na">addSelect</span><span class="p">(</span><span class="s1">'r'</span><span class="p">)</span>
<span class="o">-></span><span class="na">where</span><span class="p">(</span><span class="nv">$queryBuilder</span><span class="o">-></span><span class="na">expr</span><span class="p">()</span><span class="o">-></span><span class="na">orX</span><span class="p">(</span>
<span class="nv">$queryBuilder</span><span class="o">-></span><span class="na">expr</span><span class="p">()</span><span class="o">-></span><span class="na">between</span><span class="p">(</span><span class="s1">'a.publish'</span><span class="p">,</span> <span class="nv">$dateD</span><span class="p">,</span><span class="k">new</span> <span class="nx">\DateTime</span><span class="p">(</span><span class="s1">'now'</span><span class="p">)),</span>
<span class="nv">$queryBuilder</span><span class="o">-></span><span class="na">expr</span><span class="p">()</span><span class="o">-></span><span class="na">between</span><span class="p">(</span><span class="s1">'a.modification'</span><span class="p">,</span> <span class="nv">$dateD</span><span class="p">,</span><span class="k">new</span> <span class="nx">\DateTime</span><span class="p">(</span><span class="s1">'now'</span><span class="p">)</span>
<span class="p">)</span><span class="o">-></span><span class="na">andWhere</span><span class="p">(</span><span class="s1">'a.workspace IN (:follow)'</span><span class="p">)</span>
<span class="o">-></span><span class="na">setParameter</span><span class="p">(</span><span class="s1">'follow'</span><span class="p">,</span> <span class="nv">$follow</span><span class="p">)</span>
<span class="o">-></span><span class="na">orderBy</span><span class="p">(</span><span class="s1">'a.modification'</span><span class="p">,</span> <span class="s1">'desc'</span><span class="p">)</span>
<span class="o">-></span><span class="na">getQuery</span><span class="p">()</span>
<span class="o">-></span><span class="na">getResult</span><span class="p">();</span>
</pre></div>
</td></tr></table>
<figcaption><p>Utilisation de la fonction <a href="http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/query-builder.html"><code>expr()</code></a></p></figcaption></figure><p>Ajoutons que l'utilisation de <code>'WITH', 'r.date BETWEEN :date AND CURRENT_DATE()'</code> peut être aussi chiante pour la lisibilité par rapport au nombre de andWhere que tu as après.</p>Recuperer les commentairess entre deux date, message #1051802016-04-06T12:22:34+02:00darkiron/@darkironhttps://zestedesavoir.com/forums/sujet/5760/recuperer-les-commentairess-entre-deux-date/?page=1#p105180<p>petit up : car j'ai avancé !</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="x"> return $this->createQueryBuilder('a')</span>
<span class="x"> ->select('a')</span>
<span class="x"> ->leftJoin('a.replies','r','WITH', 'r.date BETWEEN :date AND CURRENT_DATE()')->set(1, $dateD)</span>
<span class="x"> ->addSelect('r')</span>
<span class="x"> ->where('a.publish BETWEEN :date AND :now OR a.modification BETWEEN :date AND :now ')</span>
<span class="x"> ->andWhere('a.workspace IN (:follow)')</span>
<span class="x"> //->andWhere('r.date BETWEEN :date AND :now')</span>
<span class="x"> ->setParameter('follow', $follow)</span>
<span class="x"> ->setParameter('date', $dateD)</span>
<span class="x"> ->setParameter('now', new \DateTime('now'))</span>
<span class="x"> ->orderBy('a.modification', 'desc')</span>
<span class="x"> ->getQuery()</span>
<span class="x"> ->getResult();</span>
</pre></div>
</td></tr></table>
<p>La fonction fait a peut prés le job. le hic sur les commentaires je n'ai que le premier.</p>Recuperer les commentairess entre deux date, message #1051792016-04-06T11:44:49+02:00darkiron/@darkironhttps://zestedesavoir.com/forums/sujet/5760/recuperer-les-commentairess-entre-deux-date/?page=1#p105179<p>Bonjour,
dans mon repository j'ai une fonction pour récupérer des articles et j'aimerais récupérer les commentaires liées sur une période définis par ma requête uniquement.
Donc me retrouver avec une collection de commes définis entre ses deux date.</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre> 1
2
3
4
5
6
7
8
9
10
11
12
13</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="x"> return $this->createQueryBuilder('a')</span>
<span class="x"> ->select('a')</span>
<span class="x"> ->leftjoin('a.replies','r')</span>
<span class="x"> ->addSelect('r')</span>
<span class="x"> ->where('a.publish BETWEEN :date AND :now OR a.modification BETWEEN :date AND :now ')</span>
<span class="x"> ->andWhere('a.workspace IN (:follow)')</span>
<span class="x"> ->andWhere('r.date BETWEEN :date AND :now')</span>
<span class="x"> ->setParameter('follow', $follow)</span>
<span class="x"> ->setParameter('date', $dateD)</span>
<span class="x"> ->setParameter('now', new \DateTime('now'))</span>
<span class="x"> ->orderBy('a.modification', 'desc')</span>
<span class="x"> ->getQuery()</span>
<span class="x"> ->getResult();</span>
</pre></div>
</td></tr></table>
<p>la reques sql est juste je pense, mais doctrine me retourn 1 enregistrement. </p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre>1
2
3
4
5
6</pre></div></td><td class="code"><div class="codehilite"><pre><span></span><span class="k">SELECT</span> <span class="o">*</span>
<span class="k">FROM</span> <span class="n">newscast</span> <span class="n">n0_</span> <span class="k">LEFT</span> <span class="k">JOIN</span> <span class="n">reply</span> <span class="n">r1_</span> <span class="k">ON</span> <span class="n">n0_</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">r1_</span><span class="p">.</span><span class="n">newscast_id</span>
<span class="k">WHERE</span> <span class="p">(</span><span class="n">n0_</span><span class="p">.</span><span class="n">publish</span> <span class="k">BETWEEN</span> <span class="s1">'01/03/2016'</span> <span class="k">AND</span> <span class="n">now</span><span class="p">()</span> <span class="k">OR</span> <span class="n">n0_</span><span class="p">.</span><span class="n">modification</span> <span class="k">BETWEEN</span> <span class="s1">'01/03/2016'</span> <span class="k">AND</span> <span class="n">now</span><span class="p">())</span>
<span class="k">AND</span> <span class="n">n0_</span><span class="p">.</span><span class="n">workspace_id</span> <span class="k">IN</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">7</span><span class="p">,</span><span class="mi">8</span><span class="p">,</span><span class="mi">9</span><span class="p">,</span><span class="mi">10</span><span class="p">,</span><span class="mi">11</span><span class="p">,</span><span class="mi">12</span><span class="p">,</span><span class="mi">13</span><span class="p">,</span><span class="mi">14</span><span class="p">,</span><span class="mi">15</span><span class="p">,</span><span class="mi">16</span><span class="p">,</span><span class="mi">17</span><span class="p">,</span><span class="mi">18</span><span class="p">,</span><span class="mi">19</span><span class="p">,</span><span class="mi">20</span><span class="p">,</span><span class="mi">22</span><span class="p">,</span><span class="mi">23</span><span class="p">,</span><span class="mi">24</span><span class="p">,</span><span class="mi">25</span><span class="p">,</span><span class="mi">26</span><span class="p">,</span><span class="mi">27</span><span class="p">,</span><span class="mi">28</span><span class="p">,</span><span class="mi">73</span><span class="p">)</span>
<span class="k">AND</span> <span class="p">(</span><span class="n">r1_</span><span class="p">.</span><span class="nb">date</span> <span class="k">BETWEEN</span> <span class="s1">'01/03/2016'</span> <span class="k">AND</span> <span class="n">now</span><span class="p">())</span>
<span class="k">ORDER</span> <span class="k">BY</span> <span class="n">n0_</span><span class="p">.</span><span class="n">modification</span> <span class="k">DESC</span><span class="p">,</span> <span class="n">r1_</span><span class="p">.</span><span class="nb">date</span> <span class="k">ASC</span>
</pre></div>
</td></tr></table>
<p>merci de votre aide.</p>