🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#232385
From: Wojciech Bancer
Date: Sun, 21 Apr 2019 17:49
91 lines
4734 bytes
On 2019-04-21, Marek S <precz@spamowi.com> wrote:

[...]

>> To może warto przeczytać instrukcję, skoro to dla Ciebie aż takie istotne?
>> Już nawet nie cały, ale podstawy by wypadało.
>
> Faktem jest, że gdy już wszystko zawiedzie, należy przeczytać instrukcję :-D
>
>> Myślę, że żaden ORM nie obsłuży triggerów. A do tego mają swoje constraints,
>> których nie uświadczysz na surowej bazie (jak np. obsługa tablic wartości, czyli
>> np. typ simple_array albo array).
>
> A teraz na poważnie: napisałeś wcześniej, że należałoby przeczytać 
> instrukcję, a teraz piszesz, że i tak by mi to nic nie dało gdyż 
> funkcjonalność, o którą pytam nie jest wspierana przez ORMy.

Tak poważnie, to pisze w pierwszym zdaniu tejże. Nie musiałbyś więc
potem szukać. triggery i inne rzeczy (np. stored procedures), to raczej
relikt czasów minionych, a przynajmniej ja już od dawna nie widziałem
ich w użyciu poza systemami legacy (a w kilku dużych korpo pracuję).
ORMy są nastawione na bycie kompatybilne z wieloma silnikami, w związku
z czym ograniczają się do obsługi funkcjonalności niejako "wspólnej".

I w tym momencie trzeba sobie zadać pytanie "ok, ale co w zamian 
do rozwiązania problemu". I znowu odpowiedź jest, w... instrukcji!

Doctrine "w zamian" pozwala na dodawanie eventów:
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/events.html

> Cenię Twoją wiedzę, ale nauczyciel z Ciebie kiepski ;-) Ale cóż, 
> przecierpię :-D

Nie aspiruję.

>> Triggery nie są one uniwersalne, więc żaden ORM nie będzie ich raczej obsługiwać.
>
> Jak zatem w praktyce takie rzeczy się robi? Oczywiście mógłbym ręcznie 
> dopisywać coś do migracji lecz jest w tym pewnego rodzaju zagrożenie: 
> otóż w fazie DEV, szczególnie gdy stawia się pierwsze kroki w tematyce, 
> łatwo o błędy. Zdarzało mi się automatycznie tworzyć migracje, usuwać je 
> po wycofaniu, poprawić coś tam i jeszcze raz generować. Gdybym ręcznie w 
> nich grzebał, to utraciłbym dodatkowe zmiany.

Ale do instrukcji nie zajrzałeś, bo po co? :)

> Jak zatem od strony praktycznej dołączasz nie-ORMowe wstawki? Tworzysz 
> oddzielne, ręczne migracje?

Nie dołączam.

>> A zadałeś te pytanie w google, zanim napisałeś na grupę?
>> Bo na hasło "doctrine import db" masz odpowiedź w 1 linku.
>
> Mądralo, gdybym wiedział o co pytać by w poprawnym kierunku podążać, to 
> nie zadawałbym tu pytań.

Sztuka bycia programistą, to również sztuka zadawania odpowiednich
pytań w google. Albo przeszukiwania stack overflow.

> Odpowiadając: owszem, szukałem w Google... ale narzędzi do tego (czyli 
> export to doctrine,

Zwraca właściwy wynik na 6 pozycji:
"How to Generate Entities from an Existing Database (Symfony Docs)"

> convert to doctrine).

Zwraca właściwy wynik na 3 pozycji:
"How to Generate Entities from an Existing Database (Symfony Docs)"

> Lokalnie też podpytywałem kolegów, którzy mieli z jakimikolwiek 
> frameworkami do czynienia. Wszyscy niestety, jak rzemieślnicy przy 
> taśmie fabrycznej, tworzyli encje poprzez frameworki, nigdy odwrotnie.

Bo to jest praktyczniejsze.

[...]

> Uwaga do Ciebie: bierz pod uwagę, że osoby wdrażające się w jakikolwiek 
> temat potrafią błądzić i rozpatrywać nawet absurdalne sposoby realizacji 
> jakiegoś zadania. A już w szczególności, gdy lokalne środowisko 
> zaciemnia właściwe podejście. Także trochę przyhamuj z łaski swojej z 
> takimi pytaniami.

Jakimi? Czy sprawdzałeś w google? Pytasz o tak absolutne podstawy,
że odpowiedzi naprawdę nie jest trudno się doszukać.

-- 
Wojciech Bańcer
wojciech.bancer@gmail.com
Technical Details
Message-ID: <slrnqbpb8e.f52.wojciech.bancer@pl-test.org>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <q9foak$p72$1@node2.news.atman.pl> <slrnqboo9s.e87.wojciech.bancer@pl-test.org> <q9i2hl$ua2$1@node1.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-01.news.neostrada.pl!unt-spo-a-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Newsgroups: pl.comp.lang.php
From: Wojciech Bancer <wojciech.bancer@gmail.com>
Subject: Re: Symfony 4 - jak projektować bazę danych
 pod Doctrine?
References: <q9foak$p72$1@node2.news.atman.pl> <slrnqboo9s.e87.wojciech.bancer@pl-test.org> <q9i2hl$ua2$1@node1.news.atman.pl>
Organization: None
Date: Sun, 21 Apr 2019 19:49:01 +0200
User-Agent: slrn/1.0.3 (Darwin)
Mime-Version: 1.0
Message-ID: <slrnqbpb8e.f52.wojciech.bancer@pl-test.org>
Lines: 91
NNTP-Posting-Host: 37.47.170.201
X-Trace: 1555868943 unt-rea-a-01.news.neostrada.pl 492 37.47.170.201:15333
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit