Ingoványos talaj, lehet, nem is így kellene megoldani, ahogy szeretném.
Adott egy Eloquent join(), minden remek, két tábla barátkozik, ahogy kell. A végén ->get()-ben megadok pár oszlopnevet a táblákból, mert nem minden szükséges a join után.
Ekkor ötlött fel bennem, hogy milyen nagyszerű és elegáns lenne, ha ehhez az eredményhez még egy új oszlopot hozzátennék, amely a lekérdezés bizonyos mezőjétől függő tartalommal jelenne meg. Ezt így át tudnám adni a blade template-nek, az kiírná táblázatba, stb.
Odáig eljutottam, hogy a join-olt tábla model-jében van egy metódus, ami szépen visszaadja a kívánt értéket, csak ezt a metódust nem tudom meghívni a get()-ben.
Most ennyi működik: ->get(... , DB::raw('5 as active')]); ahol az 5 helyett szeretném betenni a soronként feltételtől függő új tartalmat. Odáig el sem jutok, hogy a model-ben lévő függvényt meg tudjam hívni.
Hogyan kell ezt rendesen megoldani?
- 165 megtekintés
Hozzászólások
delete please!
A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.
- A hozzászóláshoz be kell jelentkezni
?
- A hozzászóláshoz be kell jelentkezni
rossz helyre es/vagy hulyeseget irt.
- A hozzászóláshoz be kell jelentkezni
A model es a template (view) kozott szokott lenni egy controller step. Peldaul ott vegigiteralod a megjelenitendo dolgot es csinalsz egy uj array-t amibe a db-seken kivul kulon kulcsot is hozzaadsz a foreach-ben.
Ezt igy kene csinalni minden MVC-ben.
- A hozzászóláshoz be kell jelentkezni
Igen, igen, MVC paradigma :-) A controller megvan, abban kértem le a model-t.
Egyébként tényleg a foreach ciklusban történő tömbbővítés lett a megoldás. Sokat erőltettem a a model lekérdezés közbeni tartalom bővítést, de ezek szerint ezt nem lehet megtenni.
Köszönöm a türelmet és a tippet!
- A hozzászóláshoz be kell jelentkezni
"Sokat erőltettem a a model lekérdezés közbeni tartalom bővítést, de ezek szerint ezt nem lehet megtenni."
Lehet, hogy meg lehet tenni, de a future maintainer se arra fog szamitani, hogy ilyet kell karbantartania.
Szivesen btw. :)
- A hozzászóláshoz be kell jelentkezni
Ha csak bizonyos mezok szuksegesek, akkor en ->select()-be szoktam tenni oket, es ott hasznalva a DB::raw()-t biztosan mukodik komplexebb SQL utasitasokkal is. Pl.
->select(
'tabla1.mezo1',
'tabla2.mezo3',
DB::raw('tabla1.mezo1 * tabla2.mezo3 AS valami')
)
- A hozzászóláshoz be kell jelentkezni
Alternativ otlet, bar ezt meg nem probaltam ki a gyakorlatban, de koncepcionalisan mukodnie kell(ene): letrehozol adatbazis szintjen egy view-t a szukseges mezokkel es a szamolt mezovel, majd arra letrehozol egy modelt, amivel csak olvasol.
- A hozzászóláshoz be kell jelentkezni