Latte – problém s if / else

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Andurit
Člen | 131
+
0
-

Ahojte,
vytahujem si nejaké data z DB, v zásade sú z neho podstatné tieto 2 riadky:

group_concat(DISTINCT ce.enforcement) as enfor,

LEFT JOIN candidates_enforcement as ce on c.id = ce.candidates_id

GROUP BY c.id, c.firstname, c.surname, c.email DESC

Návrh tabulky je takýto:

id  |  candidates_id  | enforcement
-------------------------------------
1   |       598       |      2
2   |       599       |      4
3   |       600       |      1
4   |       600       |      0

výsledok dostávam nejaký zoznam daných čísel tj napr pre candidates_id 600 dostanem 1,0

Ak to takto jednoducho vypisujem tak s tým nemám žiaden problém a vyíšem zoznam čísel, ak sa ale pokúsim vypísať texty namiesto čísel cez if / else podmienku v latte

{if $candidate->enfor=== 0}
	                                                <td>TEXT1</td>
	                                                {elseif $candidate->enfor=== 1}
	                                                <td>TEXT2</td>
	                                                {elseif $candidate->enfor=== 2}
	                                                <td>TEXT3</td>
	                                                {elseif $candidate->enfor === 3}
	                                                <td>TEXT4</td>
	                                                {elseif $candidate->enfor=== 4}
	                                                <td>TEXT5</td>
	                                                {elseif $candidate->enfor=== 5}
	                                                <td>TEXT6</td>
	                                                {else}
	                                                <td>{$candidate->enfor}</td>
{/if}

tak mi to vypisuje len 1 záznam ak ma dané candidates_id viac enforcementov. Vedel by mi niekto poradiť prečo resp ako to fixnúť?

Vďaka

Editoval Andurit (13. 7. 2015 20:48)

Unlink
Člen | 298
+
0
-

No základna if elseif else konštrukcia vždy vykoná len jednu vetvu.

A druhá vec, $candidate->enfor=== 1 určite nebude fungovať ak tam toho bude viac, treba použiť nejako explode() napríklad

Ešte ma napadá jedna vec, nezabudol si GROUP BY?

Andurit
Člen | 131
+
0
-

Ahoj, Group BY tam mam, sorry editol som rovno aj otázku. Vieš mi dat nejaky priklad na ten explode? :)

Unlink
Člen | 298
+
0
-

No nejak takto napríklad
in_array(1, explode(",", $candidate->enfor)) vráti true ak v $candidate->enfor bude 1