🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.php
Article #232422

Re: Symfony 4 - jak projektować bazę danych pod Doctrine?

#232422
From: Marek S
Date: Tue, 23 Apr 2019 17:10
58 lines
3592 bytes
W dniu 2019-04-23 o 15:18, ww pisze:

> A w jaki sposób ORM miałby te triggery obsłużyć? Bo ja ich używam do 
> wielu rzeczy o których ORM kompletnie nie musi wiedzieć.
> 
> I doctrine wspiera tworzenie różnych "nieporzenoszalnych"
> elementów składni SQL pod dany silnik.


O, właśnie - to mnie najbardziej interesuje. Nie chcę poświęcać 
wydajności bazy na rzecz typowego, wygodnego dla programistów, 
posługiwania się Doctrine, gdzie co niektórzy nie bardzo wiedzą, co to 
SQL (autentycznie). Chciałbym szerzej korzystać z tego środowiska.

W związku z tym mam parę pytań:

1. Czy posługujesz się migracjami do tworzenia nietypowych struktur 
poprzez dopisanie do nich własnych SQLi? Czy może porzucasz migracje i 
tworzysz bazę "normalnie", w narzędziach do takich rzeczy a potem 
jedynie importujesz niektóre tabele do ORM?

2. Co robisz jeśli ORM totalnie nie wspiera jakichś mechanizmów? Np. 
pierwszy test, jaki przeprowadziłem, dotyczył tabel polimorficznych w 
PostgreSQL. Mega użyteczna rzecz ... ale nie da się ich zaimportować do 
ORM'a, który tylko potrafi udawać polimorfizm poprzez "mapowanie" 
prostych tabelek. Z drugiej strony chciałbym, aby ORM potrafił 
zapisywać/odczytywać do/z takowych. Jak przekładasz to na ograniczone 
struktury ORMowe? Masz godne uwagi linki?
P.S.
Powyższy przykład z tabelami byłby do rozwiązania - po prostu ręcznie 
napisałbym encję i repozytorium. Ale w przypadku np. własnych typów, czy 
korzystania z procedur napisanych w PlPgSQL i nie wiem czego jeszcze - 
tak prosto może nie pójść. Jestem jeszcze na początku edukacji, stąd 
moje zapewne trywialne pytania.

3. Na koniec... z czystej ciekawości spytam: czy istnieje jakiś natywny 
sposób dla ORMa aby usunąć/zaktualizować pole w jakimś rekordzie bez 
niepotrzebnie generowanego SELECT'a?

Szukałem po Stack'u lecz wszędzie widziałem jedynie to, że ludzie 
posługują się SQLem by wykonać DELETE FROM tabela WHERE id=5. ORM wymaga:

// tu wykonywany jest nadmiarowy select
$user =$entityManager->find('Users', $id);
$entityManager->remove($user);
$entityManager->flush();

Jakoś nie chce mi się wierzyć aby ORM nie potrafił zwyczajnie usunąć 
rekordu z bazy i w tym celu generował nadmiarowe zapytania. Przekopałem 
dokumentację Doctrine i nie znalazłem odpowiedzi.


Jeśli masz jakieś sugestie, nawet nie powiązane z powyższym, a z którymi 
walczyłeś z naginaniem ORM'a - to będę wdzięczny za info.

-- 
Pozdrawiam,
Marek
Technical Details
Message-ID: <q9ngu2$rla$1@node2.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <q9foak$p72$1@node2.news.atman.pl> <slrnqboo9s.e87.wojciech.bancer@pl-test.org> <5cbf10a8$0$482$65785112@news.neostrada.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Marek S <precz@spamowi.com>
Newsgroups: pl.comp.lang.php
Subject: Re: Symfony 4 - jak projektować bazę danych
 pod Doctrine?
Date: Tue, 23 Apr 2019 19:10:19 +0200
Organization: ATMAN - ATM S.A.
Lines: 58
Message-ID: <q9ngu2$rla$1@node2.news.atman.pl>
References: <q9foak$p72$1@node2.news.atman.pl> <slrnqboo9s.e87.wojciech.bancer@pl-test.org> <5cbf10a8$0$482$65785112@news.neostrada.pl>
NNTP-Posting-Host: 89-70-94-204.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1556039426 28330 89.70.94.204 (23 Apr 2019 17:10:26 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Tue, 23 Apr 2019 17:10:26 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
In-Reply-To: <5cbf10a8$0$482$65785112@news.neostrada.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit