Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Doctrine - relacja
Apo
post 1.11.2006, 22:16:04
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


Witam

Cały czas nie moge sie połapać w tym Doctrine. Mam 3 tabele w bazie danych:
- Users (id, name, password)
- Groups(id, name) nazwy grup
- UserGroups(id, uid, gid) grupy przydzielone użytkownikom

No wiec napisałem w Doctrine:

  1. <?php
  2. class Users extends Doctrine_Record {
  3.  
  4. public function setUp()
  5. {
  6. $this->hasMany('Groups', 'UserGroups.gid');
  7. }
  8.  
  9. public function setTableDefinition()
  10. {
  11. $this->hasColumn('name', 'string', 20, 'notnull|unique');
  12. $this->hasColumn('password', 'string', 40, 'notnull');
  13. }
  14.  
  15. }
  16.  
  17. class Groups extends Doctrine_Record {
  18.  
  19. public function setUp()
  20. {
  21. $this->hasMany('Users', 'UserGroups.uid');
  22. }
  23.  
  24. public function setTableDefinition()
  25. {
  26. $this->hasColumn('name', 'string', 30, 'notnull|unique');
  27. }
  28.  
  29. }
  30.  
  31. class UserGroups extends Doctrine_Record {
  32.  
  33. public function setTableDefinition()
  34. {
  35. $this->hasColumn('uid', 'integer', 10, 'notnull');
  36. $this->hasColumn('gid', 'integer', 10, 'notnull');
  37. }
  38.  
  39. } ?>


Aby dodać użytkownika robie tak:

  1. <?php
  2. $user = new Users;
  3. $user->name = 'Apo';
  4. $user->Groups[0]->name = 'admin'; //
  5. $user->save();
  6. ?>


Po takim czymś dodaje mi sie użytkownik o nazwie Apo, dodaje sie grupa admin i automatycznie przypisuje sie ta grupa do usera w tabeli UserGroups. No i w tym problem żeby ta grupa za każdym razem sie nowa nie tworzyła tylko dała domyślną grupe admin (bez jej tworzenia). I chcialem sie zapytać jak powinno to optymalnie i poprawnie wyglądać. Zrobiłem coś takiego:

  1. <?php
  2. $user = new Users;
  3. $user->name = 'admin';
  4. $user->save();
  5.  
  6. $group = new UserGroups;
  7. $group->uid = 5; // tu trzeba dać id aktualnie tworzonego usera ale how to make this ?
  8. $group->gid = 1; // czyli admin
  9. $g->save();
  10. ?>


Pozdrawiam
Go to the top of the page
+Quote Post
SebaZ
post 13.11.2006, 14:48:29
Post #2





Grupa: Zarejestrowani
Postów: 23
Pomógł: 1
Dołączył: 20.09.2006

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


Cytat(Apo @ 1.11.2006, 22:16:04 ) *
Cały czas nie moge sie połapać w tym Doctrine. Mam 3 tabele w bazie danych:
- Users (id, name, password)
- Groups(id, name) nazwy grup
- UserGroups(id, uid, gid) grupy przydzielone użytkownikom

ja mam tylko jedno skromne pytanko: a po co robisz 3 tabele? czy to nie marnotrawstwo zasobów? wystarczy do tabeli Users dorzucic jedno dodatkowe pole, np. group i tam wstawiać id grupy do której ma userek należeć. To jest relacyjność
Go to the top of the page
+Quote Post
dr_bonzo
post 13.11.2006, 15:04:03
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


A co zrobisz gdy user moze nalezec do wielu grup?
Cytat
UserGroups(id, uid, gid) *grupy* przydzielone użytkownikom


grupy -- liczba mnoga


--------------------
Nie lubię jednorożców.
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 Wersja Lo-Fi Aktualny czas: 25.06.2024 - 12:39