Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Cake i problem z bazą
Radzio12
post
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
Go to the top of the page
+Quote Post
dr_bonzo
post
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
Go to the top of the page
+Quote Post
siemakuba
post
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.
Go to the top of the page
+Quote Post
Radzio12
post
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
Go to the top of the page
+Quote Post
siemakuba
post
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ć:
  1. <?php
  2. // HomeController Class
  3. $this->Home->GetAllDataNeededToDisplayHomepage();
  4. ?>
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.
Go to the top of the page
+Quote Post
_KuRT_
post
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).
Go to the top of the page
+Quote Post
Radzio12
post
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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 22:00