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
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 #doctrine
@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?
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
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 ( ͡° ͜ʖ ͡°)
#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

Czego wymagamy?
- znajomość #zend framework, #webservices (#rest i #soap), #html, #javascript, #oop, #github #doctrine
- znajomości Angielskiego

Osoby, które się zdecydują spędzą tydzień w Dreźnie na szkoleniu.
Miejsce pracy zdalnie lub w biurze w #katowice (biuro tylko dla tego zespołu - max 6
#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

Czego wymagamy?
- znajomość #zend framework, #webservices (#rest i #soap), #html, #javascript, #oop, #github #doctrine
- dobrej znajomości Angielskiego

Osoby, które się zdecydują spędzą 2-3 tygodnie w Dreźnie na szkoleniu.
Miejsce pracy zdalnie lub w biurze w
Czuję się jak ostatni lamus :( Jak noobek mam problem z utworzeniem encji.

Encja zawiera relację m2m, jednostronnie.

/**
* @ORM\ManyToMany(targetEntity="ProductFeature")
* @ORM\JoinTable(name="product__products_features",
* joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="icon_id", referencedColumnName="id")}
* )
*/
private $features;

Jest wpięta w formularz, tam siedzi kolekcja. Kolekcja jest ładnie handlowana na froncie. Kontroler wchodzi w handleForm i... w ArrayCollection (na etapie $form->isValid() czyli kolejna linijka) pojawia się jakaś pusta tablica z dupy (screenshot). Przez
lewakanieszkoda - Czuję się jak ostatni lamus :( Jak noobek mam problem z utworzeniem...

źródło: comment_0d7sHdsRBMFtOyLJ7DOjRPbnINGady7d.jpg

Pobierz
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
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 zapytaniach


@Jurigag: Mówię o keszu metadanych. Doctrine parsuje komentarze przy encjach, co zżera czas. Oni to ujmują w benchmarku, gdzie w realnej applikacji nigdy to się
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,
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.
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 poprzedniej pracy
#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 doradzić?
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 mam dwa
@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.
@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
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 taki SQL:
SELECT
*,
COUNT(v.record_id) AS user_votes
@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 LIKE '%ROLE_DESIGNER%'
GROUP BY u.id
ORDER BY user_votes DESC");

Nie ma to jak SQL ()
Mirki, mam takie coś:
W Bazie danych przechowuję:
użytkownicy
wyzwania
zadania
wyniki
achievements.

Chciałbym pobrać z bazy danych wszystkich użytkowników, którzy biorą udział w wyzwaniu, a następnie zrobić ORDER BY wyniki + achievements DESC. Do tego musi być zrobiona paginacja. Korzystam z KNPaginator, więc muszę przekazać do niego query, dlatego zwykły SQL odpada.
Czy da się to zrobić korzystając z query builder?

#symfony2 #symfony #doctrine #php
@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
@mariecziek:
$query=$em->createBuilder()
->select('u')
->from('entitywyzwania','w')
->leftJoin('w.uzytkownicy','u')
->leftJoin('u.wyniki','wy')
->leftJoin('u.achievments','a')
->where('w.kolumna = :wyzwanie')
->setParameter('wyzywanie',$wyzwanie)
->orderBy('a.kolumna + wy.kolumna','DESC')
->getQuery();

nie napisałeś nic o relacjach więc wrzucam na ślepo
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ć wartość ile
@Jurigag: okej poradziłem sobie:
usunąłem joina i zrobiłem tak:

SELECT * FROM (
TUTAJ POPRZEDNI SELECT BEZ JOINA
ORDER BY costam
LIMIT x
OFFSET y
) t1
TUTAJ JOIN
ORDER BY t1.costam

i działa, jakieś inne pomysły jak można takie coś rozwiązać ? pomijając robienie zapytania dla każdego elementu(WTF)
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
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 php) i bym sam
@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 phalcona
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