🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#232384
From: Marek S
Date: Sun, 21 Apr 2019 15:34
65 lines
4081 bytes
W dniu 2019-04-21 o 14:25, Wojciech Bancer pisze:

>> Bardzo niewygodnie tworzy się struktury bazodanowe używając make:entity
>> i potem zastanawiając się czy np. pole "string" stanie się varchar czy
>> text itd.
> 
> 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.

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

> 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.

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

>> Czy jest jakaś możliwość aby ORM zbudował się na podstawie albo pliku
>> SQL, albo na postawie tego, co jest w bazie?
> 
> 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ń.

Odpowiadając: owszem, szukałem w Google... ale narzędzi do tego (czyli 
export to doctrine, convert to doctrine). I tak np. analizowałem Navicat 
pod kątem tego, czy potrafi wygenerować coś dla ORMów. Nie pomyślałem, 
że sam ORM takie rzeczy potrafi sam z siebie robić, ma wbudowane 
importowanie. A dlaczego nie pomyślałem? Wyjaśniam poniżej.

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. 
Jeden z nich nawet sądzi, że klucze obce tworzy się za pomocą Join'ów. 
Stąd podświadomie założyłem, że ORM to jednokierunkowy mechanizm w 
zakresie tworzenia struktur w bazach.

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.

-- 
Pozdrawiam,
Marek
Technical Details
Message-ID: <q9i2hl$ua2$1@node1.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>

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: Sun, 21 Apr 2019 17:34:07 +0200
Organization: ATMAN - ATM S.A.
Lines: 65
Message-ID: <q9i2hl$ua2$1@node1.news.atman.pl>
References: <q9foak$p72$1@node2.news.atman.pl> <slrnqboo9s.e87.wojciech.bancer@pl-test.org>
NNTP-Posting-Host: 89-70-94-204.dynamic.chello.pl
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1555860853 31042 89.70.94.204 (21 Apr 2019 15:34:13 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Sun, 21 Apr 2019 15:34:13 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
In-Reply-To: <slrnqboo9s.e87.wojciech.bancer@pl-test.org>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit