Wpis z mikrobloga

#symfony2 #symfony3
mam kolekcje encji z takimi polami
user, date, geo
user, date to obiekty, geo to tekst

przykladowe rekordy:

1, 2015-05-01, 49.29
1, 2015-05-02, 45.29
1, 2015-05-03, 47.29
1, 2015-05-15, 45.29
1, 2015-05-18, 47.29
1, 2015-05-31, 49.29
2, 2015-05-01, 49.29
2, 2015-05-02, 49.29
2, 2015-05-03, 49.29
2, 2015-05-15, 49.29
2, 2015-05-18, 49.29
2, 2015-05-31, 49.29
date do data od 1 do ostatniego dnia miesiaca, user to ID usera. Chce z tego wygenerowac cos na zasadzie kalendarza czyli:

thead tr: user 2015-05-01 2015-05-02 2015-05-03 2015-05-04
tbody tr: user1 49.29 47.29 25.29...
tbody tr: user2 49.29 47.29 25.29...
tbody tr: user3 49.29 47.29 25.29...
domyslnie jest renderowany formularz jeden pod drugim ja to chce miec w formie tabeli..

jakies pomysly?
  • 8
@qwelukasz: To ma być formularz czy tabela (edytowalne czy tylko do wyświetlenia)?

Od strony usera zrób kolekcje tych obiektów -> "doctrine: OneToMany", w zapytaniu daj LeftJoina, ewentualnie where z zakresem do dat. Od strony formularza: CollectionType. Problem tylko taki że jak będzie dużo userów i tych obiektów z datami to będzie długo generował obiekty a później formularze do tego. Jak chcesz samą tabele, to olej obiekty zwróć tablice.
Druga sprawa Kaj zrobić żeby to było szybkie?

100 użytkowników * 30 dni daje trochę pół..


@qwelukasz: A już masz i stwierdziłeś, że jest zbyt wolne? Bo ile razy myślałem, że coś będzie za wolne, okazywało się, że nikt nie marudzi. Więc i nie ma co sobie psuć kodu optymalizacjami.
@qwelukasz: ORM ma to do siebie, że daje wiele fajnych bajerów ale "kosztem czasu". Myślałem że będziesz miał więcej rekordów ale 3k to nie aż tak dużo. Bierz pod uwagę że dev a produkcja to całkiem 2 różne rzeczy. Chociaż akurat SQL'a to raczej nie przyspieszy.

Jak ja buduje takie tabeli, staram się niektóre rzeczy ajaxem doładowywać :)
@MacDada ja wiem co to są form themes bardziej się zastanawiam jak z takiej jednowymiarowej tablicy zrobić dwu...
Ew mógłbym zrobić to bez formularza symfonowego i samemu walidowac Ale tak się chyba nie robi?
Bo łatwiej by mi było pobrać dane, zrobić z nich tabelę i potem z tej tabeli formularz..
@qwelukasz: Ja już walidujesz, to waliduj przez AbstractType. Próbowałem kilka razy wymyślić koło na nowo i było średnio. Symfony umożliwia walidować cały obiekt bez tworzenia specjalnej klasy formularza: http://symfony.com/doc/current/validation.html#using-the-validator-service - wysyłasz obiekt do odpowiedniego service, on ci zwraca info jak przeszła walidacja.

MacDada już powiedział sprawdź czy tworzenie CollectionType nie zamula:
http://symfony.com/doc/current/reference/forms/types/collection.html
http://symfony.com/doc/current/form/form_collections.html - Task ma wiele tagów, jak u Ciebie -> user ma wiele tych geo/date.

Często w devie coś