Wpis z mikrobloga

Dobra kolejny problem mam...

wiele do wielu: item <-> attributes w nim id, itemid, attributeid, value,timestamp

teraz potrzebuje pobrać dla item o ID np 1: atrybuty, pogrupować je po attribute_id wybrać najnowszy zapisany atrybut dla każdej z gruby

Tak samo dla wielu item, czyli wybieramy dla każdego najnowsze atrybuty z kafej z gruby

Ma ktoś pomysł jak to rozpisać w eloquencie ?

#laravel
  • 5
@Radaka: odpytaj z ładowaniem relacji z callbackiem, tj. with('...' => fn() => ...) gdzie zrobisz groupBy + order dzięki czemu uzyskasz tylko najnowsze atrybuty pogrupowane po danym ID.

Przy okazji, wydaje mi się że coś namieszałeś ze strukturą bazy. Po co trzymasz starsze atrybuty? Rozważ przeniesienie do innej tabeli, wszystkie zapytania to znacząco uprości. Jeżeli masz je tylko po to żeby w UI pokazać w jednym miejscu poprzednią wartość to w
@aso824: przy pod zapytaniu zaczyna mi sie wysypywać o "attribute_item.id' isn't in GROUP BY " wybieram wszystkie pola i dodaje je też do group by i oczywiście nie grupuje w ogolę bo grupuje po wszystkich polach zamiast tylko po tym które mi jest potrzebne

wszystkie starsze zapytania są jako historia żeby później w zakresie czasu można je porównywać lub tak jak i porównać item <=> item (zakres czasu)
przy pod zapytaniu zaczyna mi sie wysypywać o "attribute_item.id' isn't in GROUP BY " wybieram wszystkie pola


@Radaka: jeśli to mysql to config/database.php, możesz przełączyć strict na false.
@nowiutki: to postgres, a obchodzenie takich rzeczy też nie dobra praktyka, tak jakby zrezygnować z typowania zmiennych bo jakaś zmienna ma inną wartość niż powinna mieć ;)