Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Symfony - tinyint jako klucz, relacja z drugą tabelą
Forum PHP.pl > Forum > PHP
Malinaa
Witam, mam encje i tworzę kolumnę kategorie

/**
* @ORM\ManyToOne(targetEntity=DbmGalleriesCategory::class, inversedBy="dbmGalleries")
* @ORM\JoinColumn(nullable=false)
*/
private $category;

po utworzeniu migracji daje mi to w tabeli bazy danych typ: int(11)

Nie potrzebne jest tu jednak int(11) wystarczy tinyint(2),
wszystkich kategorii jest mniej iż 100 i nigdy więcej tu nie będzie.

Jak zmienić encje, aby po migracji dała w bazie danych typ: tinyint(2) ?
nospor
* @ORM\Column(type="tinyint")

Dokumentacja czy google naprawde nie boli wink.gif

Nie mniej jednak powinienies miec na uwadze ze albo mozesz miec problemy albo juz beda bo

Cytat
There is no tinyint type in Doctrine 2. Reason is straightforward:

A Doctrine type defines the conversion between PHP and SQL types, independent from the database vendor you are using. All Mapping Types that ship with Doctrine are fully portable between the supported database systems.

You should pick one of these:

integer: Type that maps a SQL INT to a PHP integer.
smallint: Type that maps a database SMALLINT to a PHP integer.
bigint: Type that maps a database BIGINT to a PHP string.

Ale dawno sie nie bawilem w doctrine wiec moze to olali
Malinaa
Dokumentacja czytelna jako tako wink.gif w Google znalazłem info, że tinyimt w Doctrine stosuje się tylko jako boolean true lub false,
więc próbowałem z smalllint, ale tu też nie jest dobrze - po zmianie klucza z integer kolumna przestaje być kluczem i zaś trzeba rzeźbić ręcznie, aby z tego wyjść.
Wystarczy, że chcesz coś zoptymalizować i już jest problem (dziadowskie to Doctrine jak cholera), musisz robić standardowo chałę i wówczas jest no problem - noo działa sukces.

Zostawię int(11) - działa, więc co chcę więcej (będę mieć fajną cięższą bazę - no problem).
Pyton_000
Primo jeśli chcesz mieć smallint to musisz zmienić i w tabeli źródłowej i w tabeli dowiązanej (FK wymaga tego samego typu)
Secundo zawsze możesz sobie migrację napisać sam która to wytworzy i nie musisz się opierać o doctrynowy Diff
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.