Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SF][Symfony]entity manager w encji
jakis_login
post 10.08.2016, 15:36:48
Post #1





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Pracuje na sf 3.
Mam "doinstalowaną" Sonatę
Pytanie: Jak pobrać em w środku encji? czy w ogóle się da? Potrzebne mi to do wykonania specjalengo zapytania na bazie. W kontrolerze to wiem jak pobrać natomiast gorzej w encji.
Go to the top of the page
+Quote Post
kapslokk
post 10.08.2016, 15:53:59
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


A coż to za specjalne zapytanie potrzebujesz wykonać, że w encji chcesz dorwać entity manager?
Go to the top of the page
+Quote Post
jakis_login
post 11.08.2016, 08:12:10
Post #3





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


no jest to select dość złożony który wykorzystuje między innymi if'y group by order i limit etc.
Go to the top of the page
+Quote Post
kapslokk
post 11.08.2016, 08:16:47
Post #4





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


No dobra, ale czemu chcesz to umieścić w entity?
Go to the top of the page
+Quote Post
jakis_login
post 11.08.2016, 08:35:47
Post #5





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Bo chcę łatwo się odwołać juz w /src/AppBundle/Admin/ProgramAdmin.php w metodzie configureListFields (czyli na liście/tabeli programów):
  1. $listMapper->add('programs.countmath', 'integer', array())

i teraz jeśli w encji dam metodę getCountmath i tam moje zapytanie ze zwróconą wartością to na tej liście ładnie mi wyświetli wyniki
Go to the top of the page
+Quote Post
kapslokk
post 11.08.2016, 08:38:36
Post #6





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


A pomyślałeś, że w takim przypadku dla 100 elementów na liście wykonasz 100 zapytań? Nie uważasz, że to troche zbyt dużo? Nie lepiej w Repository stworzyć odpowiednią metodę do pobierania danych, które są Ci potrzebne w jednym zapytaniu?

Ten post edytował kapslokk 11.08.2016, 09:02:09
Go to the top of the page
+Quote Post
jakis_login
post 11.08.2016, 08:47:06
Post #7





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


hmmm ale jak to wyświetlić na mojej liście w takim razie?
Go to the top of the page
+Quote Post
Damonsson
post 11.08.2016, 09:09:39
Post #8





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Kompletnie nie wiem o co Ci chodzi, wytłumacz dokładnie co chcesz osiągnąć, a nie zadawaj złych pytań. Wygląda na problem typu: Chcesz usmażyć upolowanego dzika, a na forum pytasz, jak rozpalić w domu ognisko. Na 99% rozpalenie ogniska w domu jest niepotrzebne.

Jeśli chcesz zrobić śmietnik w kodzie, to możesz sobie wywołać tam entity manager.

W encji:
  1.  
  2. class SuperEncja
  3. {
  4.  
  5. private $entityManager;
  6.  
  7. public function __contruct($entityManager)
  8. {
  9. $this->entityManager= $entityManager;
  10. }


W wywołaniu encji:

  1. new SuperEncja($entityManager)


Ale to jest słabe.


Z tego co zrozumiałem, musisz użyć entity repository, a nie pakować to do entity. A więc: https://symfony.com/doc/current/doctrine.ht...ository-classes + https://symfony.com/doc/current/doctrine/repository.html

Ten post edytował Damonsson 11.08.2016, 09:10:54
Go to the top of the page
+Quote Post
jakis_login
post 11.08.2016, 10:02:46
Post #9





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


no wiem, że to jest słabe ale i tak nie o to mi chodziło bo w Twoim przykładzie i tak musze podac w parametrze konstrukora entity managera a mi chodzi aby go nie przekazywac tylko poprostu skorzystać z niego w encji
Go to the top of the page
+Quote Post
Damonsson
post 11.08.2016, 10:14:55
Post #10





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Ale jak? Jesteś czarodziejem? biggrin.gif

W gwoli ścisłości DependencyInjection jest bardzo sympatyczne. Słabe jest pakowanie do encji metod, zwracających wyniki customowych zapytań.

Entity repository służy do tego co chcesz zrobić, albo przynajmniej tak mi się wydaje, co chcesz zrobić. Przeczytaj sobie dokumentację (wklejam jeszcze raz) https://symfony.com/doc/current/doctrine/repository.html

Ten post edytował Damonsson 11.08.2016, 10:15:31
Go to the top of the page
+Quote Post
jakis_login
post 11.08.2016, 11:51:08
Post #11





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Dobra to z innej beczki...
Jak w /src/AppBundle/Admin/ProgramAdmin.php w metodzie configureListFields (czyli na liście/tabeli programów) dodać dodatkowo swoją kolumnę aby przy każdym wierszu była inna wartość która będzie pochodzić z zapytania/metody w encji czy repository obojętnie?
Go to the top of the page
+Quote Post
Damonsson
post 11.08.2016, 12:11:42
Post #12





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Zakładam, że używasz Sonata Admin Bundle. Nie używam, więc pewien nie jestem, ale tak samo jak metody z encji, tak samo powinieneś móc pobrać metody z entity repository:


  1. $listMapper->add('id', 'integer', array()) // z Entity
  2. $listMapper->add('mojaSuperMetodaWEntityRepository', 'integer', array()) // z Entity Repository
Go to the top of the page
+Quote Post
jakis_login
post 11.08.2016, 12:30:23
Post #13





Grupa: Zarejestrowani
Postów: 169
Pomógł: 1
Dołączył: 30.09.2010
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


no to z EntityRepository mi nic nie wyświetla - jakby co to dodałem w encji:
  1. * @ORM\Entity(repositoryClass="AppBundle\Repository\ProgramRepository")
Go to the top of the page
+Quote Post
Damonsson
post 11.08.2016, 13:25:14
Post #14





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Pewnie musiałbyś to jeszcze dodać do Forma. A z ciekawości co ma być w metodzie programs.countmath?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 19:17