Mirki, potrzebuję pomocy. Trzeci dzień próbuję rozwiązać pewien problem i w żaden sposób mi się to nie udaje.

Powiedzmy mam 2 encje: Post i Tag. W encji Tag, w bazie danych mam zapisane tagi. Mogę je dodawać, mogę je usuwać. Każdy Post może mieć wiele tagów, ale tylko tych z listy tagów. Nie ma żadnego dynamicznego dodawania czy usuwania tagów. Tak więc zrobiłem to relacją ManyToMany. jednak przy próbie aktualizacji Posta, rzucało wyjątek:
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Chciałbym jak najprostszym sposobem zrobić operacje importu danych z pliku xlsx asynchronicznie. Z tego co widzę operacje doctrine sprawiają, że klient i tak czeka na response, a z kolei użycie fastcgifinishrequest przerywa zupełnie te operacje.

Przeczytałem, że najprościej jest to zrobić używając SlmQueue - dobrze myślę? Może znacie jakiś prostszy sposób bez instalowania dodatkowych bibliotek?

Framework zf2

#programowanie #php #zend #zend2 #
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@spike200: ten twój SlmQueue i tak wymaga jakiejś kolejki więc musisz postawić osobną usługę a nie tylko instalować bibliotekę, kolejkę możesz obsłużyć i bez tej biblioteki. Jak nie chcesz niczego instalować to zawsze możesz na chama odpalić nowy proces php przez system(), działa ale jest niesamowicie głupim pomysłem. Może po prostu cronjob?
  • Odpowiedz
@plushy: Zrobiłem to używając SlmQueue i SlmQueueDoctrine. Nie trzeba niczego na serwerze instalować tylko odpalić proces kolejki z konsoli zenda. Działa pieknie.
  • Odpowiedz
Dzisiaj spotkałem się z taką sytuacją w #php
Otóż mam lokalnie zainstalowanego PHP7, na serwerze (nie produkcyjnym) mam PHP5.6. Zgłoszony został błąd, że nie mozna zapisać informacji. No więc szukam błędu lokalnie i wszystko działa. No ale postanowiłem zmienić wersję PHP na 5.6. No i okazało się, że rzeczywiście, mam Fatal Error przy zapisywaniu informacji w bazie danych.

Co powodowało błąd? Ano to, że mam taką metodę, która na podstawie klucza generuje
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Otóż mam lokalnie zainstalowanego PHP7, na serwerze (nie produkcyjnym) mam PHP5.6.

Gdybym chciał mieć tą samą wersję PHP do każdego projektu, to zabrakłoby mi miejsca, na kontenery dockera na dysku


@mariecziek: a potem dziwić się że powstają żarty o programistach php ( ͡° ͜ʖ ͡°)
  • Odpowiedz
#php Backend Developer ze znajomością #zendframework

Co będziesz robił?
- analiza kodu
- poprawa funkcjonaliści i późniejsze utrzymanie portalu
- tworzenie nowej wersji portalu
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#php Backend Developer ze znajomością #zendframework

Co będziesz robił?
- analiza kodu
- poprawa funkcjonaliści i późniejsze utrzymanie portalu
- po kilku miesiącach zaczniemy tworzyć portal od nowa, w nowszych technologiach
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

jakby ktoś chciał sprwadzić wydajność ORM w różnych frameworkach/bibilotekach w #php to tutaj znajomy ze slacka zrobił forka swojego orm benchmarka https://github.com/zyxep/php-orm-benchmark zaktualizowane wersje, php7 itp #phalcon #webdev #symfony #doctrine #laravel #yii
https://github.com/zyxep/php-orm-benchmark/tree/master/docker pod tym adresem same wyniki jakby ktoś chciał sprawdzić jak to wygląda na najnowszych wersjach i php 7
  • 25
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

w innych frameworkach też używają bez keszowania


@Jurigag: Nie za bardzo ogarniam inne, więc ciężko mi powiedzieć co tam robią źle. Gdzieś powinni też dorzucić?

ehhh, co ma cache do rzeczy jak pobierasz jeden rekord ? XD ten cache przyda się dopiero przy kolejnych
  • Odpowiedz
mirki, mam taki problem, klient ma ten sam system(webaplikacja) postawiony dwa razy, bo było to robiony na szybko - po prostu w jednym systemie są inne zamówienia, w drugim innego rodzaju, jest oddzielna baza danych itd, i teraz chce abym mu scalił bazę, oba systemy korzystały ze wspólnej bazy(tj użytkownicy, firmy itd w bazie były wspólne dla obu systemów) i teraz zastanwiam się jak to rozwiązać, czy wszystko upchnąć do jednej bazy,
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Jurigag: Jak chcesz scalić to po całości – jedna baza na wszystko. Nie próbuj robić, że np wspólna tabelka użytkowników, a inne rzeczy w oddzielnych tabelach, bo pokiereszują Ci się relacje.
  • Odpowiedz
Sprawa nie jest taka prosta, do odpowiedzi i opracowania planu scalenia była by potrzebna znajomość struktury całej bazy. Masz w niej pewnie relacje typu zamówienie---->pozycje_zamowienia itp. Zmiana jednego id rozsypie ci te relacje.

Najpierw trzeba przeanalizować strukturę, podjąć decyzję czy można zmieniać id i na jakie relacje będzie to miało wpływ. Następnie trzeba skorygować wiązania. Operacja wykonalna ale raczej kosztowna, wymaga dokładnego zaplanowania i przetestowania.
  • Odpowiedz
#symfony #symfony2 #symfony3 #doctrine #php

Jak escapować dane? Potrzebuję wykorzystywać natywne zapytania sql i nie mam jak escpaować danych.
Bindowanie raczej odpada, a mysqlescapestring nie istnieje w php7. mysqlrealescape_string wymaga z kolei połączenia, a tego wyciągnać od Doctrine się chyba nie da po dobroci, bo tam PDO siedzi zaszyte gdzieś?
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Witajcie.
Jest taka sytuacja. Korzystając z #symfony2 i #doctrine pobieram rekordy z bazy danych. Używam zarówno find(), findAll(), findOneBy() itd. Piszę też zapytania do db korzystając z query builder. Wydaje mi się jednak, że mam za dużo zapytań do bazy danych. Na jednej stron mam 36 zapytań do bazy danych , mimo że tam wyświetlam tylko statystykę o produktach i użytkownikach (użytkownik - ilość głosów, produkt - ilość głosów).
W
  • 11
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

#symfony #php mirki rozkminiam symfony i mam taki problem a dokladnie w #doctrine. Mam Encje event ktora ma relacje one to many z encja member. Dodatkowo encja Event ma pole quantity ktore okresla ile osob moze zapisac sie do wydarzenia. I teraz zastanawiam sie jak stworzyc zapytanie ktore zrobi cos w stylu where quantity < member.length gdzie member.length to ilosc powiazan z eventem. Ktoś mógłby
  • 3
  • 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
załóżmy mam relacje one to many, chce za jednym zamachem poprzez Native Query w #doctrine pobrać relacje która jest jako MANY, jednakże chcę również zastosować LIMIT oraz OFFSET dla mojej relacji która jest jako ONE, jak tu ogarnąć to żeby pobrał mi dobrze ? czy jednak tą relacje many pobierać po prostu jakoś totalnie oddzielnie albo jako union ? union przejdzie ? czy może jakoś to zliczać idzie i dodawać
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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,
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

w sumie tak mnie mirki ciekawi - czy ktoś wie jakie partie kodu w #symfony i #doctrine działają najwolniej, mają największy wpływ na wydajnośc (robił jakieś testy, bawił się xdebugiem itp narzędziami) i ma jakieś materiały dotyczące tego ? chodzi mi o sam kod frameworka, bo w sumie w wolnym czasie bym mógł przepisać to na zephir(który potem jest kompilowany na c i działa to jako rozszerzenie do
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@MacDada: ale ja nie będę pisał alternatywy dla doctrine mireczku - chcę tylko przepisać te klasy które wolno działają na zephir, który jest kompilowany do c, dzięki czemu bedą one działały po prostu szybciej, nadal będzie to doctrine i będzie on wymagany, po prostu doctrine zamiast korzystać z kodu php będzie korzystał z kodu który działa jako rozszerzenie do php w c :P jasne że alternatywa jest - ORM z
  • Odpowiedz
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