Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [symfony] Struktura bazy danych vs model/kontroller, ...klucze obce, delete cascade itp
IMP
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 20.08.2007

Ostrzeżenie: (0%)
-----


Cześć,

trochę ostatnio szaleje z postami na tym forum za co chyba powinienem przeprosić. Potrzebuje jednak waszej pomocy bo nie jestem wstanie przebrnąć przez temat samodzielnie.

Projektujemy w małym zespole serwis internetowy. "Mamy" bazę, skonfigurowane symfony, stronka już zaczyna działać ale nie jest tak jakbyśmy sobie to wyobrażali. Założyliśmy sobie że kasowanie zbędnych rekordów będzie się odbywało za pośrednictwem kluczy obcych albo trigerów ( z naciskiem na te pierwsze ).


Przykładowa tabela przedstawiająca komentarze do profilu użytkownika:
  1. AjCommentsUserprofile:
  2. connection: doctrine
  3. tableName: aj_comments_userprofile
  4. columns:
  5. id:
  6. type: integer(4)
  7. fixed: false
  8. unsigned: false
  9. primary: true
  10. autoincrement: true
  11. cu_user_id:
  12. type: integer(4)
  13. fixed: false
  14. unsigned: false
  15. primary: true
  16. autoincrement: false
  17. parent:
  18. type: integer(4)
  19. fixed: false
  20. unsigned: false
  21. primary: false
  22. notnull: false
  23. autoincrement: false
  24. content:
  25. type: string()
  26. fixed: false
  27. unsigned: false
  28. primary: false
  29. notnull: true
  30. autoincrement: false
  31. user_id:
  32. type: integer(4)
  33. fixed: false
  34. unsigned: false
  35. primary: false
  36. notnull: true
  37. autoincrement: false
  38. thumb_up:
  39. type: integer(4)
  40. fixed: false
  41. unsigned: false
  42. primary: false
  43. default: '0'
  44. notnull: false
  45. autoincrement: false
  46. thumb_down:
  47. type: integer(4)
  48. fixed: false
  49. unsigned: false
  50. primary: false
  51. default: '0'
  52. notnull: false
  53. autoincrement: false
  54. thread_id:
  55. type: integer(4)
  56. fixed: false
  57. unsigned: false
  58. primary: false
  59. notnull: true
  60. autoincrement: false
  61. created_at:
  62. type: timestamp(25)
  63. fixed: false
  64. unsigned: false
  65. primary: false
  66. notnull: true
  67. autoincrement: false
  68. updated_at:
  69. type: timestamp(25)
  70. fixed: false
  71. unsigned: false
  72. primary: false
  73. notnull: true
  74. autoincrement: false


Pytania:
- istnieje możliwość nie definiowania pola ID, jeżeli w innej tabeli jest klucz wskazujący na to pole?
- w momencie kiedy tabela zawiera 2 klucze PRIMARY to taki kod:
  1. $form->save()->getId();

zwraca NULL. Jak w takim razie powinna być zbudowana baza żeby rekordy kasowały się CASCADE i jednocześnie działał nam model.
Powód edycji: [phpion]: Poprawiłem orta w temacie bo walił go gałach :)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
destroyerr
post
Post #2





Grupa: Zarejestrowani
Postów: 879
Pomógł: 189
Dołączył: 14.06.2006
Skąd: Bytom

Ostrzeżenie: (0%)
-----


Strasznie przegadany schemat.

Cytat
istnieje możliwość nie definiowania pola ID, jeżeli w innej tabeli jest klucz wskazujący na to pole?

To jeśli usuniesz pole id to na co ma potem wskazywać inna tabela?

Cytat
w momencie kiedy tabela zawiera 2 klucze PRIMARY to taki kod:
  1. $form->save()->getId();


zwraca NULL. Jak w takim razie powinna być zbudowana baza żeby rekordy kasowały się CASCADE i jednocześnie działał nam model.

Nie wiem dlaczego tak się dzieje (zakładam, że obiekt zapisał się w bazie danych). Spróbuj zrzucić obiekt do tablicy, albo przeładować.
Swoją drogą po co Wam taki klucz główny?
Go to the top of the page
+Quote Post
jaro87
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 7
Dołączył: 10.03.2011
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(IMP @ 20.10.2011, 14:46:24 ) *
w momencie kiedy tabela zawiera 2 klucze PRIMARY

W relacyjnych bazach danych nie może być 2 kluczy głównych. To co tam masz to jest klucz główny złożony z 2 kolumn przy czym ta druga kolumna jest w tym wypadku całkowicie zbędna.

Ale to że po zapisaniu obiektu id jest nullem to dziwna sprawa:) Nie próbujecie czasem zapisywać tego formularza wcześniej w sesji?
Go to the top of the page
+Quote Post
Valantir
post
Post #4





Grupa: Zarejestrowani
Postów: 93
Pomógł: 7
Dołączył: 6.09.2011
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Cytat(jaro87 @ 21.10.2011, 08:32:54 ) *
Ale to że po zapisaniu obiektu id jest nullem to dziwna sprawa:)

Miałem podobną sytuację... Szukałem rozwiązania i nie znalazłem:/ Jedynym wyjściem u mnie, była zmiana klucza głównego.

Ten post edytował Valantir 21.10.2011, 12:44:13


--------------------
Pomogłem? Kliknij "Pomógł".
Go to the top of the page
+Quote Post
IMP
post
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 20.08.2007

Ostrzeżenie: (0%)
-----


Dzięki wszystkim za odpowiedz. Doszedłem do wniosku że coś mam skopane z bazą i nie potworzyły się klucze obce:/ Znacie może jakis dobry tutorial tworzenia bazy danych w doctrinie który omawia nieco bardziej skomplikowany przypadek niż Jobeet?

Kombinuje dzisiaj cały dzień i jak na razie działają klucze obce. Doctrine zwraca poprawne wyniki Joinów itp. Jednak ciągle nie mogę pobrać zaraz po wywołaniu metody save() pola ID z tabeli Activitie. Wszystko inne włącznie z kluczem obcym a_user_id pobiera się poprawnie. Co za tym idzie nie działa mi redirect po save.


Ten post edytował IMP 24.10.2011, 14:45:43
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 08:12