Article View: pl.comp.lang.php
Article #232388Re: Symfony 4 - jak projektować bazę danych pod Doctrine?
From: Marek S
Date: Mon, 22 Apr 2019 21:18
Date: Mon, 22 Apr 2019 21:18
88 lines
3677 bytes
3677 bytes
W dniu 2019-04-21 o 14:25, Wojciech Bancer pisze:
>> 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.
...i nie działa w przypadku bardziej złożonych struktur niż prosta
tabela bez wyszukanych powiązań.
No więc w Postgresie stworzyłem strukturę, którą od pewnego czasu
stosuję w projektach:
create table if not exists test
(
id bigserial not null
constraint test_pkey
primary key,
aaa varchar(100) not null,
bbb varchar(200) not null
);
create table if not exists test2
(
ccc varchar(150) not null
)
inherits (test);
create table if not exists test3
(
ddd varchar(150) not null
)
inherits (test);
Tak, wiem, że zaraz zadasz pytanie: "a co ta struktura ma robić, bo my
nie wiemy". Asekuracyjnie odpowiem: kosić trawnik.
Próbuję to zaciągnąć zgodnie z tym, co doctrine opisuje, lecz otrzymuje
błąd:
php.exe D:\HTML\Symfony\bin\console doctrine:mapping:import App\Entity
annotation --path=src/Entity
In DatabaseDriver.php line 288:
Table test2 has no primary key. Doctrine does not support reverse
engineering from tables that don't have a primary
key.
doctrine:mapping:import [--em [EM]] [--shard SHARD] [--filter FILTER]
[--force] [--path PATH] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose]
[-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV]
[--no-debug] [--] <command> <name> [<mapping-type>]
Process finished with exit code 1 at 22:51:22.
Execution time: 1,516 ms.
Tak, wiem, że napiszesz iż wprowadzony stosunkowo niedawno do Postgresa
(od 9.3 bodajże) polimorfizm jest legacy. Jednakże chciałbym używać
polimorfizmu bez tworzenia substytutów w postaci:
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/inheritance-mapping.html
Interesuje mnie zwykły polimorfizm, bez tworzenia dziwacznych układów 2
tabel, które muszę JOINować lub tworzenia Single Table Inheritance,
które w obu przypadkach nie jest żadnym dziedziczeniem lecz odpowiednio
zwykłym JOINowaniem lub budowaniem prostych tabel, zawierających niby
dziedziczone pola.
Jak wymusić importowanie polimorficznych struktur?
Jutro przeprowadzę test z importoiwaniem user-typów, które używam od
lat. Również z uwzględnieniem tych "legacy" - czyli istniejących od
niedawna, w/g Twojej nomenklatury. Powiem tak: nie spodziewam się
niczego pozytywnego. Ale zobaczymy, może się mylę.
--
Pozdrawiam,
Marek
Technical Details
Message-ID:
<q9lb2m$rq3$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-mailReferences:
<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: Mon, 22 Apr 2019 23:18:08 +0200 Organization: ATMAN - ATM S.A. Lines: 88 Message-ID: <q9lb2m$rq3$1@node2.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: node2.news.atman.pl 1555967894 28483 89.70.94.204 (22 Apr 2019 21:18:14 GMT) X-Complaints-To: usenet@atman.pl NNTP-Posting-Date: Mon, 22 Apr 2019 21:18:14 +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