![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam takie 2 tabele Obrazek tabelek trzecia (dolna tabelke) otrzymuje po wykonaniu zapytania : SELECT a.*, b.name as 'role_name', b.id as 'role_id' FROM gw_admins as a, gw_admin_roles as b WHERE a.id = '$id' AND key_id = '{$_SESSION['gw_admin']}' and a.role = b.id i teraz moje pytanie. Jak mam sobie kontener na admina gdzie trzymam : private $id; private $gw_key_id; private $username; private $password; private $email; private $role; private $first_name; private $last_name; private $phone; czy powinienem tez trzymac private $role_id; nie chce robic osobnego obiektu dla samych roli bo mi bedzie nie potrzebny natomiast przy wywolaniu selectAdmin($id) chce znac jego role po nazwie i miec dostep do id tej roli. Jak to z punktu OOP rozgryzc ? $admin= new Admin(); $admin->getRole()->getId() , jakos tak ? |
|
|
![]() ![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 64 Pomógł: 6 Dołączył: 20.03.2011 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Ja nie rozbijam w ogóle roli na osobna tabelę. Mam definicje stałych w pliku konfiguracynym config.php dla tych zmiennych np. define('SYSTEM_ROLE_USER', 'user'). Tych stałych używam w kodach, mam wtedy zachowaną czytelność, gdybym w kodzie uzywał numerków to musiałbym zaglądać do bazy aby przypomnieć sobie co, która cyferka oznacza - a głowa nie śmietnik. W tabeli SystemUser mam pole 'role' a w nim już konkretne nazwy 'admin', 'user'. Tabela SystemUser jest na tyle zgrabna, że nie widziałem potrzeby jej rozbijania ze wzgl. na pole 'role'. Obok pola 'role' ma również 'username', 'password', 'registerDate'.
Jeśli chcesz trzymać dane np. adresowe odn. użytkownika wtedy możesz obok tabeli SystemUser stworzyć tabelę PersonEntity, która będzie ogólną tabelą informującą o innych danych użytkownika. Można ją potem wykorzystywać w dowolnym projekcie, który nie wymaga akurat czegoś takiego jak konto użytkownika. -------------------- "I see" - said the blind man.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
SOrry, ale nie do konca rozumiem takie podejscie. A co np. w momencie jakby mozna byloby dynamicznie dodawac nowe role. Tabela wydaje mi sie musi istniec, bardziej zastanawia mnie jak wtedy wygladac powinien obiekt. Narazie trzymam w nim i id roli i nazwe roli choc wydaje mi sie ze jest to troche zle, choc praktycznie.. sprawdza sie
![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 53 Pomógł: 1 Dołączył: 20.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
Cytat $admin= new Admin(); $admin->getRole()->getId() Bardzo dobry pomysł. Jeśli potrzebujesz $role_id i $role_name w klasie usera to nie widzę przeszkód by takie pola utworzyć - choć osobiście zrobiłbym osobną klasę. Na marginesie zastanawiam się czy nie lepiej byłoby utworzyć, prócz tabel 'users' i 'roles' trzecią tabelę relacji 'users_roles' [user)id, role_id], a generują zapytanie sql korzysstać z JOIN - w ten sposób możesz przypisać użytkownikowi wiele ról. No chyba że niepotrzebne Ci są relacje wiele-do-wielu ![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
Hej elo.
Drazac temat. Pytanie jak powyzej. Czy moge miec obiekt w obiekcie jezeli tak to czy jest ktos w stanie mi troszeczke to jakby lopatologicznie wyjasnic. Sytacja ma sie glownie w zapytaniach jak lacze rozne tabele i wyciagam info zwiazane nie tylko z jednym obiektem lecz z 2 a w przyszlosci pewnie i z wieksza iloscia. Mam np. obiekt komentarz, yo. [PHP] pobierz, plaintext while($row = mysql_fetch_assoc($sql)) { $comment = new comment(); $comment->setId($row['id']); $comment->setGwKeyId($row['gw_key_id']); $comment->setAuthorId($row['author_id']); // tutaj mam id autora, samo id mnie nie interesuje, chce znac imie i nazwisko. Aby nie zadawac 2 zapytan do bd, zadaje jedno duuuuze i wyciagam info, yo. $comment->setTarget($row['target']); $comment->setTargetId($row['target_id']); $this->comment[] = $comment; } tak wiec robie LeftJoina. Np = [PHP] pobierz, plaintext $sql = mysql_query("select c.*, a.id as 'admin_id' , a.firstName as 'admin_firstName' , a.lastName as 'admin_lastName' , a.login as 'admin_login' FROM gw_comments as c LEFT JOIN gw_admins as a ON c.author_id = a.id WHERE target='$target' AND gw_key_id = '{$_SESSION['gw_admin']}' AND target_id = '$id'"); NO dobra i czy teraz obiekt admin sobie siedzi w obiekcie comentarz pod private $author_id czy mam stworzy 2 obiekt. Jak to ugryzc. Help |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
Comments to "kolekcja" do której pakujesz kolejne komentarze wraz z obiektem UserObject, który "zarządza" danymi autora komentarza. Nie opiszę ci tego dokładnie bo jest to kilka ładnych klas ale spokojnie nie zostawię cię z niczym ![]() ![]() Ten post edytował CuteOne 27.09.2011, 21:47:55 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
czyli w obiekt komments pod zmienna np. private $author pakuje obiekt User, dobrze to rozumiem ?
|
|
|
![]()
Post
#8
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Tak. Dobrze to rozumiesz.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 0 Dołączył: 5.03.2011 Ostrzeżenie: (0%) ![]() ![]() |
fuck yeah
![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 05:03 |