[Megoldva] Laravel Eloquent query, dinamikusan hozzáadott oszloppal és tartalommal

Fórumok

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?

Hozzászólások

Szerkesztve: 2022. 05. 10., k – 15:30

delete please!

A tudomány és a hit vitája akkor eldőlt, amikor villámhárítót szereltek a templomokra.

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.

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!

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')
)