Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Kohana] many-to-many: stworzenie powiazania ktore czeka na akceptację
pkielski
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.07.2016

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


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ć.
Go to the top of the page
+Quote Post
daro0
post
Post #2





Grupa: Zarejestrowani
Postów: 88
Pomógł: 12
Dołączył: 17.09.2014
Skąd: Krasnystaw

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


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. }
Go to the top of the page
+Quote Post
pkielski
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.07.2016

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


Zrobienie modelu dla tej laczacej tabeli - tak prosto! ze tez na to nie wpadlem. Dziękuję bardzo Kolego!
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




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.
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 - 05:38