DB where, opakování poslední poslané podmínky
- Mury
- Člen | 7
Ahoj,
stručně, mám tento kód v latte, který je ještě obalený jedním foreachem – tam se vypíši předměty (jen pro představu)
{foreach $marks_hm->where('student_id = ? AND subject_id = ?', $user->getIdentity()->id, $subject_by_group->subject_id) as $mark}
<div class="mark_div mark_detail">
<span class="mark">
{if (($mark->mark|length) == "1")}
{$mark->mark}
{else}
{$mark->mark|truncate:1:""|padRight:2:"-"}
{/if}
</span>
<span class="scale">{$mark->scale}</span>
<span class="date">{$mark->date|date:'j. n. y'}</span>
</div>
{/foreach}
problém nastane hned na 2. řádku nebo-li předmětu.
„$marks_hm“ si jakoby pamatuje poslední poslané podmínky z prvního
řádku a vypíší se i u druhého atd.
tady je ukázka: http://postimg.cz/…10/WN9nG.png
Na obrázku vyznačený 5. řádek:
vznikne: .. WHERE (student_id
= 1 AND subject_id
= 1)
AND (student_id
= 1 AND subject_id
= 2)
a já bych potřeboval pouze .. WHERE (student_id
= 1 AND
subject_id
= 2)
Budu rád, za každou radu.
Díky
Editoval Mury (10. 4. 2018 20:08)
- nightfish
- Člen | 519
Ano, protože where()
na Selection
při opakovaném
volání přidává další a další podmínky. Špatným, ale funkčním
řešením je zavolat where()
před foreachem:
$marks = $marks_hm->where('student_id = ? AND subject_id = ?', $user->getIdentity()->id, $subject_by_group->subject_id);
{foreach $marks as $mark}
...
Lepším řešením je veškeré hrátky s databází přesunout do modelu a do šablony si předávat už jenom předpřipravená data v co nejjednodušší podobě.
Editoval nightfish (10. 4. 2018 21:28)
- Mury
- Člen | 7
nightfish napsal(a):
Ano, protože
where()
naSelection
při opakovaném volání přidává další a další podmínky. Špatným, ale funkčním řešením je zavolatwhere()
před foreachem:$marks = $marks_hm->where('student_id = ? AND subject_id = ?', $user->getIdentity()->id, $subject_by_group->subject_id); {foreach $marks as $mark} ...
Lepším řešením je veškeré hrátky s databází přesunout do modelu a do šablony si předávat už jenom předpřipravená data v co nejjednodušší podobě.
bohužel stále, nefunguje. Furt to zapisuje dohromady. Ale i tak díky.
To lepší řešení o kterém píšeš.. to právě chci přesunout, ale
nevím přesně jak.
Jelikož mám ten foreach (který jsem tu předložil) obalený ještě
jedním.. a z toho získávám hodnotu:
($subject_by_group->subject_id) tak jak umožnit
(v presenteru $this->template->marks_hm =
$this->classificationManager->getMarks(); – abych zadával argumenty, a
následně v latte jen pouze zadal..) nikde jsem nenarazil na žádný
příklad..:/