Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] many-to-many: stworzenie powiazania ktore czeka na akceptację
Forum PHP.pl > Forum > PHP > Frameworki
pkielski
Mam:
- użytkownicy
- grupy

Uzytkownicy dolaczaja do grup, jednak przed pelnym otrzymaniem dostepu powinni byc w stanie zawieszenia, akceptacji ktoregos innego z juz istniejacych czlonkow grupy. Racjonalne wydaje sie dodac do tabeli laczacej users_groups, dodatkowe pole active (status/waiting itp). Tylko jak w prosty sposób do niego dojść - ustawić wartość przy tworzeniu, a pozniej zmodyfikować i odczytywać.
daro0
Zakładam że utworzysz sobie tabelę user_groups z polami: id (int11 unsigned, PK, autoincrement ), user_id (int11 unsigned), group_id (int11 unsigned) oraz active (tinyint(1)) i masz:

APPPATH/classes/Model/User/Group.php a w nim tak:

  1. class Model_User_Group extends ORM
  2. {
  3. protected $_table_name = 'user_groups';
  4.  
  5. protected $_belongs_to = array(
  6. 'user' => array('model' => 'User', 'foreign_key' => 'user_id'),
  7. 'group' => array('model' => 'Group', 'foreign_key' => 'group_id'),
  8. );
  9.  
  10. }


i przy dodawaniu (załóżmy że dodajesz siebie jako zalogowanego użytkownika tzn. wyrażasz chęć dołączenia):

  1. $user = Auth::instance()->get_user();
  2. $group = ORM::factory('Group', $jakies_id_grupy);
  3.  
  4. $user_group = ORM::factory('User_Group');
  5. $user_group->user_id = $user->id;
  6. $user_group->group_id = $group->id;
  7. $user_group->active = false;
  8. $user_group->save();


a potem tylko w prosty sposób jakiś admin może to aktywować:

  1. $user_group = ORM::factory('User_Group')
  2. ->where('user_id', '=', $jakies_id_uzytkownika)
  3. ->where('group_id', '=', $id_tej_grupy)
  4. ->find();
  5. IF ($user_group->loaded())
  6. {
  7. $user_group->active = true;
  8. $user_group->save();
  9. }
  10. else
  11. {
  12. // jakies instrukcje powiadamiajace ze nie ma takiego uzytkownika w grupie
  13. }
pkielski
Zrobienie modelu dla tej laczacej tabeli - tak prosto! ze tez na to nie wpadlem. Dziękuję bardzo Kolego!
phpion
Ja w takich przypadkach puszczałem tego typu tabelę poza ORM. Nie uśmiechało mi się naginanie struktury tabel na rzecz ograniczeń ORM. Pole id w tej tabeli jest totalnie zbędne, ponadto wartości w nim będą rosły (o ile aktualizując dane najpierw je usuwasz po czym wstawiasz na nowo), na kolumny user_id + group_id przydałoby nadać się ograniczenie unikalności. Ja bym poszedł w stronę zwykłego QB dodając do modelu metody typu save_groups() itp.
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.