#symfony2 #symfony #php

Mam encje Exchange która zawiera przelicznik waluty (dodawne przez admina/moderatora).
Chce aby przy każdym dodaniu (postPersist) oraz po każdej edycji (postUpdate) uruchamiana była akcja/skrypt który dla danej waluty przeliczy w bazie prowizje ze sprzedaży.

Zrobiłem to na event listenerze ale w takim wypadku ten event bedzie uruchamiany przy każdej edycji encji - nie tylko Exchange. Czy macie jakieś
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@qwelukasz: dobra rada - nie używaj doctrinowych eventów, one służą do zupełnie czego innego niż logika biznesowa, napisz sobie własny event, obsłuż go event listenerem z symfony, zrób to w miarę jawnie, a nie doctrinową magią, bo potem dostaniesz raka debugując te wszystkie doctrinowe eventy
  • Odpowiedz
Witajcie mirki.

Tworzę w pracy stronkę, gdzie ma być sklep elektroniczny. Napisałem sobie serwis, gdzie tworzę zamówienie, dodaję produkty do zamówienia, pobieram informację o zamówieniu, cenę itd.
Jednak z powodu braku doświadczenia nie robię tego w odpowiedni sposób. W poprzedniej pracy widziałem jak takie coś było zrobione przez doświadczoną osobę i to mniej więcej wyglądało tak:
$this->getOrder()->getPrice() - aby pobrać cenę.
$this->getOrder()->getStatus() - aby pobrać status zamówienia.
  • 21
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mariecziek: odpuść sobie pisanie sklepu, zakopiesz się w gównie po kolana. Pomijając to, że piszesz aplikację i mieszasz kod infrastruktury (symfony2) i logiki biznesowej (zamówienia, płatności i takie tam).

Poczytaj sobie o zasadach SOLID, może obejrzyj jakąś prezentację z konferencji na yt.

Twój "OrderService" łamie bardzo wiele tych zasad. W programowaniu obiektowym nie powinieneś mieć takiego "serwisu" który robi wszystko związanego z
  • Odpowiedz
@mariecziek: taj w sensie encji, wszystkie te metody tam powinny się znajdować bo operują one na Order, ale przecież ty tu nie operujesz na sqlach, operujesz na orderze xD a to że robisz niepotrzebne zapytania co chwile to już inna kwestia, wiesz o tym że zamiast tego:

public function addOrderItem(Orders $order, ProductVariation $productVariation, $amount)
{
$orderItem = new
  • Odpowiedz
Witajcie mirki.
1. Mam projekt na #symfony2 i muszę zrobić koszyk. W jaki sposób zrobić to najlepiej? Aktualnie zamierzam zrobić tak, że będę przechowywał w bazie danych: użytkownik -> produkt.
2. Nie mam w pracy team leadera i muszę sobie radzić sam, więc może podpowiecie mi gdzie najlepiej upchnąć logikę koszyka (dodawanie, usuwanie, edycja produktów w koszyku)? Przy poprzednim projekcie logikę pakowałem do serwisów, ale jako że słabo znam strukturę
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

jak w tym #!$%@? #doctrine usunąć entity z managera żeby nie było ono wrzucane do bazy ? o co mi chodzi - mam sobie entity które ma inne entity, edytuje to inne entity, tylko że zanim zapisze szukam czy nie ma podobnego rekordu dla podobnych wprowadzonych danych, jeśli jest to ustawiam już na to istniejące tylko że doctrine i tak uparcie robi insert into tego co wpiszę w formie i
  • 26
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Jurigag: Nie wiem czy dobrze rozumiem pytanie, ale wg mnie po znalezieniu w bazie pasujacego klienta robisz zamowienie->setClient($znaleziony); wtedy powinno sie zapisac dobrze pod warunkiem ze zrobisz flush($zamowienie) a nie flush(). Samo flush zapisze wszystko lacznie z nowym klientem pochodzacym z formularza.
Co do wrzucania nowego z formularza to dziala to tak jak powinno.
  • Odpowiedz
@uirapuru: w sumie jak zacząłem operować po prostu bez zmiennych a na referencji tj tylko korzystając z $rentOrder->getFinalCarUser / setFinalCarUser to poszło gładko, jak klonowałem tworzyłem jakieś nowe zmienny i inne cuda to się cuda robiły
  • Odpowiedz
Witajcie mirki.
Taka sytuacja. Mam w bazie danych 2 tabele: user, product i vote. W tabeli vote zapisuję:
userid | type | recordid. W polu userid przechowuję id użytkownika który głosował, w polu type przechowuję typ głosowania (użytkownik lub produkt), w polu recordid przechowuję id rekordu z tabeli user lub product.
Chciałbym pobrać ile głosów zostało oddane na użytkownika, dlatego napisałem
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@mariecziek: Whatever, rozwiązałem to w taki sposób:

$query = $this->getEntityManager()->createQuery("SELECT u, COUNT(v.recordId) as user_votes
FROM AppBundle\Entity\User u
LEFT JOIN AppBundle\Entity\Vote v WITH v.recordId = u.id
WHERE u.roles
  • Odpowiedz
@mariecziek: musisz pobrać z bazy danych wszystkich użytkowników, którzy biorą udział w wyzwaniu, a następnie zrobić ORDER BY wyniki + achievements DESC.
Ty nie szukasz podpowiedzi jak to zrobić tylko całego rozwiązania. Zadaj precyzyjne pytanie to otrzymasz odpowiedź. Jak nie umiesz w dql to napisz w sql a później przepisz na dql
  • Odpowiedz
Mam pytanie do mirków z #programowanie #php #symfony2
Otóż.... w tabeli w bazie danych będę musiał w jednej kolumnie (tzn w polu przy każdym rekordzie) stworzyć kilkanaście relacji do innej tabeli. Tak się w ogóle da, czy muszę to rozdzielić na kilkanaście osobnych rekordów? #pytanie
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@czolnowski: faktycznie, może masz rację. Zrobię to "brzydko" ;).

@MacDada: Dzięki wielkie za wyczerpującą odpowiedź. Będę wiedział na przyszłość. Co do tagowania, gdyby to było stackoverflow nie tagowałbym php i symfony2, ale na mirko tag doctrine obserwuje jedna osoba.
  • Odpowiedz
Chcę zrobić system hierarchii, znalazłem wręcz identyczny przykład w dokumentacji, ale coś nie działa tak jak powinno
link do dokumentacji: http://doctrine-orm.readthedocs.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-many-self-referencing

mój kod: http://pastebin.com/45Y5gbpf

to zwraca w polu children: http://pastebin.com/J1kZANgd
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@qwelukasz: $er zostanie dodany jako argument funkcji przy wywołaniu, a Ty chcesz jeszcze dodać coś z zewnętrznego scope.

Bo tą funkcję anonimową to nie Ty będziesz wywoływał a jakiś form manager, który widząc że w parametrze query_builder dodałeś funkcję anonimową wywoła ją z parametrem $er, skąd od ma wiedzieć, że chcesz tam jeszcze $caravan?
  • Odpowiedz
trochę to słabe właśnie jest że funkcje anonimowe nie są bindowane przez symfony do np formy bo rozumiem że tam masz $caravan zdefiniowane


@Jurigag: trochę to niewykonalne, bo tę f-cję anonimową wywołuje EntityType (konkretniej, DoctrineType), który nie ma dostępu do obiektu twojego forma. Zresztą nie widzę żadnego use-case na to, którego normalnie nie załatwia konstrukcja use.

Nie zapominaj że od php 5.4 $this jest automatycznie domyślnie bindowane do zewnętrznego scope
  • Odpowiedz
Witajcie mireczki.
Załóżmy, że tworzę sklep internetowy z butami. Buty mają nazwę oraz opis. Mogą też mieć różne rozmiary i kolory. Chciałbym stworzyć możliwość dodania butów z róznymi kolorami, rozmiarami itd. Rozwiązałem to sobie w następujący sposób:
1. Tworzę w bazie danych 4 tabele: Buty, Kolor, Rozmiar i RodzajButów
2. W tabeli Buty przechowują tytuł i opis jakiegoś modelu buta.
3. W tabeli Kolor przechowuję wyłącznie kolory.
4. W tabeli Rozmiar przechowują wyłącznie rozmiary butów (męskie, damskie, chłopięce,
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#symfony #php #symfony2
jak wiadomo (albo i nie) kazdy domylnie w sf dziedziczy role po ROLE_USER
Teraz pytanie: w bazie mam kilka ról... jak pobrać z bazy tylko zwyklych userow, bez innych rol?
moge zrobic selecta z na sztywno wpisanym where roles = 'a:0:{}' ale moze macie jakies inne sposoby?
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jeśli to do jakiegoś pobocznego, rzadko używanego bajeru, a użytkowników nie masz specjalnie dużo, to zaciągnij wszystkich i sprawdź PeHaPem w pętli o których Ci chodzi.


@MacDada: tak to wlasnie zrobilem tyle ze wstrzykuje role hierarchy do serwisu, pobieram role usera i sprawdzam czy jest w hierarchii bo user ROLEADMIN nie pokaze ze ma rolemoderator albo role_user wiec trzeba hierarchie z security przeleciec
  • Odpowiedz
#symfony2 #symfony
Takie pytanie:
Mam encje post i tags - podrecznikowy przykład. Jak zrobić aby dodając tags do post były one w kolejności jakich je dodam? I żebym w takiej kolejności mógł je wyciągać?
User może dodać Max 5 tagow,
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

SLECT SUM(DATEDIFF(MIN(nextDate, e1.dateto), MAX(previousDate, e1.datefrom)) + 1) ... WHERE e1.dateto >= previousDate AND e1.datefrom <= nextDate


@MQs: wydaje się działać, tylko musiałem MIN i MAX zmienić na LEAST i GREATEST, dzięki mireczku
  • Odpowiedz
czy z zmienną przekazaną do widoku(twig) z symfony poprzez $this->rednerView coś jeszcze się dzieje ? mam tablicę tablic, w której znajduje się indeks z pustą tablicą, robie var_dump tej zmiennej i wyświetla mi normalnie ten indeks a gdy chce się do niego odwołac w widoku to pisze że nie istnieje, wtf ? :X dodam że wartośc tego indeksu to pusta tablica
#php #symfony2
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach