🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#232388
From: Marek S
Date: Mon, 22 Apr 2019 21:18
88 lines
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-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: 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