![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 7.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam !. Jestem twórcą pewnego dużego portalu i chciałbym go zmodyfikować używajac do tego frameworku "cake". Problem polega na tym, że portal jest bardzo rozbudowany i ma juz swoją strukturę bazy danych i nie chciałbym jej zmieniać ("trwałoby to kilka lat:)"). W jaki sposób mogę sie dostać do danych w bazie. Np. Mam moduł "Home" dla strony głownej. Strona ta zawiera menu, kolumny i i wiele danych pobieranych z róznych tabel. Według specyfikacji MVC, mogę mieć dostęp do tabeli "Home", mogę również użyć $hasmany itp.. ale nie o to przecież chodzi. Czy jest jakiś sposób żeby to obejść.
z góry dziękuje |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Przenosze: php Pro --> Gotowe skrypty
|
|
|
![]()
Post
#3
|
|
Grupa: Przyjaciele php.pl Postów: 1 112 Pomógł: 20 Dołączył: 10.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Zakładam, że chodzi ci framework CakePHP. Zakładam też, że problem rodzi się z tego, że masz już określoną strukturę bazy, której nie chcesz zmieniać, a nie jest ona zgodna z wymaganiami CakePHP.
Jeżeli chodzi o modele w CakePHP, to wiele rzeczy możesz ustawić "po swojemu". Zajrzyj np. tu: http://manual.cakephp.org/chapter/models, sekcja 3. Cytat $useTable If the database table you wish to use isn't the plural form of the model name (and you don't wish to change the table name), set this variable to the name of the table you'd like this model to use. Większość informacji znajdziesz w dokumentacji. To, czego nie znajdziesz w dokumentacji znajdziesz w kodzie, z którym tak czy inaczej będziesz musiał się zapoznać. pozdr. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 7.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Znam użycie, $useTable natomiast chodzi mi o to że np. w modelu "Home" potrzebuje dostepu do kilkunastu tabel a tutaj standardowe użycie modelu nie wystarczy. Czy jedynym rozwiazaniem jest użycie asocjacji tabel? a poza tym to rozwiązanie wymusza użycie kolejnego modelu itd.
Ten post edytował Radzio12 5.12.2006, 14:27:49 |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 1 112 Pomógł: 20 Dołączył: 10.04.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jakiś czas już nie zaglądałem do CakePHP, ale czy przypadkiem to nie Controller decyduje o tym jakie modele wykorzystuje?
Mając HomeController podajesz w nim jakie modele potrzebujesz i korzystasz z nich do pobrania odpowiednich danych. Nie bardzo wiem dlaczego jeden model Home ma odpowiadać za dostarczenie wszystkich danych potrzebnych do wyświetlenia strony głównej? Ja widzę to raczej tak: - HomeController korzysta z modelów: News, Categories, Articles, Whatevers - HomeController pobiera z odpowiednich modeli odpowiednie dane i przekazuje do widoku. Jeżeli dobrze zrozumiałem, próbujesz stworzyć jeden model, który dostarczy ci wszystkich potrzebnych danych z wielu różnych tabel. Założę się też, że na stronie nie wszystkie dane pokazywane na stronie są ze sobą faktycznie powiązane np. przez relacje w bazie. Takie rozwiązanie byłoby więc maksymalnym przekombinowaniem, chociaż może fajnie byłoby zrobić: i dostać wszystkie dane (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Chyba żaden framework nie da aż takiego Rapid Development (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdr. P.S. jeżeli źle rozumuje, popraw mnie. Opieram się na tym co zrozumiałem z tego co chcesz osiągnąc. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 27.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
mozna dla kazdej tabeli zrobic model w ktorym ustawiamy $useTable, nastepnie np w Controllerze Home ustawiamy:
Kod <?php class HomeController extends AppController { var $name="Home"; var $uses=array("Home","Users",.....); w miejsce "....." wstawiamy uzywane w tym Controllerze Modele (tabele). |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 7.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki za pomoc, twoja rada była przydatna pomimo, że szukałem troszkę innego rozwiązania (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) . W mojej bazie jest ponad 300 tabel więc tworzenie 300 modulow czy kontrolerów może nie być najlepszym rozwiązaniem, ale z drugiej strony kazdy modul bedzie zawierał osobny zestaw funkcji, więc bedzie ich dużo , ale bedą uporządkowane.
Dzieki za radę i pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 22:00 |