Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [symfony] Struktura bazy danych vs model/kontroller
Forum PHP.pl > Forum > PHP > Frameworki
IMP
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.
destroyerr
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?
jaro87
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?
Valantir
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.
IMP
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.
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-2025 Invision Power Services, Inc.