![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Od jakiegoś czasu uczę się Symfony 3.1 w oparciu o Doctrine
Mam problem ze zbudowaniem relacji pomiędzy tabelami. Wycinek projektu bazy danych wygląda tak https://snag.gy/Bj9abF.jpg Tabela comapny - przechowuje podstawowe informacje o firmie Tabela company_type - jest odpowiednikeim kategorii Tabela company_type_relation - łączy dwie powyższe tabele Podczas generowania formularza dodawania firmy, ładuję sobie do selectbox'a dane z company_type. Jak napisać adnotacje w entity company aby po zapisie wypełniła się prawidłowo tabela company_type_relation ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 7 Dołączył: 3.01.2016 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem, czy do końca zrozumiałem, ale jeśli firma ma mieć wiele kategorii, to mamy klasyczną relację Many-To-Many:
http://doctrine-orm.readthedocs.io/project...-unidirectional Czyli coś w stylu:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
Firma może mieć dokładnie jedną kategorię czyli relacja ManyToOne
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
W takim razie tabela łącząca nie jest Ci potrzebna. W entity company powinieneś mieć pole companyType i dla niego ustawione ManyToOne
http://symfony.com/doc/current/book/doctrine.html I szukaj ManyToOne Ten post edytował kapslokk 12.07.2016, 12:14:12 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
w standardowym przypadku oczywiście zgodziłbym się jednak aplikacja będzie oparta na pewnej koncepcji(te 3 tabele są jedynie wycinkiem projektu i to w niekompletnego) dlatego wolałbym aby była tabela łącząca(chodzi głównie o wydajne przeszukiwanie)
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat chodzi głównie o wydajne przeszukiwanie Troche odbiegne od tematu ale w czym ma ci w takim razie pomoc rozbicie tego na tabele laczaca?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 965 Pomógł: 285 Dołączył: 19.06.2015 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
http://docs.doctrine-project.org/en/latest...with-join-table
tutaj coś masz. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
załóżmy, że będziemy mieć 2mln firm w bazie. W pewnym momencie będę chciał pobrać wszystkie id firm które mają przypisaną kategorię o id 2. Zakładając, że część zapytań będzie wykonywana asynchronicznie - czy ten przypadek nie zwróci szybciej wyniku z użyciem tabeli łączącej?
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Zakładając, że część zapytań będzie wykonywana asynchronicznie Co masz na mysli?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 304 Pomógł: 1 Dołączył: 28.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
asynchronie już po stronie skryptu ajax'em - istnieją serwisy które doczytują sobie dane asynchronicznie, i to doczytywanie działa bardzo wolno. Raz może to być problem po stronie skrypty(słabo zoptymalizowany) a dwa w konstrukcji bazy danych.
|
|
|
![]()
Post
#11
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Nie wiem o jakim wolnym dzialaniu mowisz. 2 mln rekordow dla bazy to pikus (rzecz jasna przy poprawnej strukturze i indeksach) i robienie oddzielnej tabelei dla twojej relacji to tylko bez sensowne kombinowanie.
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 15:05 |