Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Kohana] Prosty ORM lub poradnik o podpięciu Doctrine
Forum PHP.pl > Forum > PHP > Frameworki
starach
Poszukuję prostego ORM'a do frameworka Kohana w wersji 2.3.4. Głównie zależy mi na dobrej walidacji danych i ewentualnie jeszcze wsparciu dla formularzy. Próbowałem podpiąć pod niego Doctrine, ale po godzinie prób się poddałem. Jeśli macie jakiś dobry poradnik do tego to też bym nie pogardził.

Dzięki.
kwazarmaster
Looknij tu : http://www.phpandstuff.com/articles/codeig...stall-and-setup
Kohana jest oparta na CodeIgniter więc instalacja będzie wyglądała tak samo.
phpion
W czy Ci nie pasuje domyślny kohanowy ORM? Miałem styczność z Propelem i z Doctrine, ale wkurzało mnie generowanie modeli przy każdej zmianie czy brak możliwości korzystania ze specyficznych typów dla danej bazy danych (np. boolean w PostgreSQL - można użyć inta, ale nie tędy droga).

Dla mnie ORM w Kohanie (2.3.4) jest super. Nie muszę robić nic poza zdefiniowaniem relacji między modelami. Śmiga aż miło.
kwazarmaster
Gadasz Panie... Ja używam Codeignitera z Doctrine. Dlaczego? Bo graficznie sobie projektuje baze danych w Workbenchu potem naciskam sobie przycisk i mam model do Doctrine i jest dużo ładniej i przyjemniej niż z wbudowaną biblioteką CodeIgnitera. Warto.
phpion
Przypomnę tylko, że wątek dotyczy Kohany, a nie CI. Używałeś ORM w Kohanie? Pewnie nie, dlatego nie wiem na jakiej podstawie go dyskwalifikujesz na rzecz Doctrine. Moim zdaniem kohanowy ORM jest naprawdę niezły, można z nim wiele osiągnąć. Autorowi wątku zależy na ORM walidację danych oraz tworzenie formularzy - tutaj na pewno warto się zainteresować Formo (z racji formularzy). Jest plugin do współpracy z ORM więc nie wiem czy jest sens kombinować z jakimś zewnętrznym rozwiązaniem.
Crozin
W tej chwili jestem w trakcie integracji Kohany i Doctrine (ale wersji 3.0.6 i 2.0-DEV) - jeżeli to co zrobiłem się sprawdzi podeślę Ci "how to"

btw: ORM Kohany (przynajmniej tej z wersji 3) to jakieś nieporozumienie - w każdym bądź razie jako nieporozumienie traktuję ORMa nie potrafiącego wykonać i odpowiednio przetworzyć zapytania z JOINem.
magnus
Ja mam jeden serwis na takim właśnie środowisku (K 2.3.4 + D 1.2). Dość dawno to integrowałem, więc nie pamiętam szczegółów tongue.gif W każdym razie chwilę trzeba było pogooglować. Działa to generalnie dobrze - Doctrine jest jako moduł dołączone do KO i tyle smile.gif
starach
~Magnus: Tak tylko gdzie wrzucić dane inicjalizujące. Znalazłem dwa opisy niestety oba nieaktualne/niedziałające http://www.mapledesign.co.uk/projects/kohana-doctrine/ i http://www.devcomments.com/Kohana-and-Doctrine-to93932.htm

~Crozin: Czekam z niecierpliwością.

~kwazarmaster: Nie wygląda tak samo. Niestety.

~phpion: Właściwie jedyne co mi się podoba w ORM Kohany to QueryBuilder, a i to nie do końca.
magnus
No więc pokrótce mogę opisać jak to u mnie wygląda.
1. Pliki doctrine wrzucone do foldera /modules/doctrine (w tym folderze są pliki doctrine i doctrine.php oraz foldery 'hooks' i 'vendor' - w tym ostatnim są już właściwe biblioteki - folder Doctrine i plik Doctrine.php).
2. W config.php mam dopisane MODPATH.'doctrine' do $config['modules'] oraz zmienną $config['database_dns'] = 'mysql://.......' czyli parametry połączenia.
3. W modules/doctrine/hooks/doctrine.php jest taka zawartość:
  1. <?php
  2. ini_set('include_path',ini_get('include_path').PATH_SEPARATOR.APPPATH.'models/doctrine'.PATH_SEPARATOR.APPPATH.'models/doctrine/generated');
  3.  
  4. require_once(dirname(__FILE__).'/../vendor/Doctrine.php');
  5.  
  6. $db = Kohana::config('database.default');
  7.  
  8. $conn_string = "{$db['connection']['type']}://{$db['connection']['user']}:{$db['connection']['pass']}@{$db['connection']['host']}/{$db['connection']['database']}";
  9. // Set the autoloader
  10. spl_autoload_register(array('Doctrine', 'autoload'));
  11.  
  12.  
  13. $manager = Doctrine_Manager::getInstance();
  14. $manager->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_CONSERVATIVE);
  15.  
  16. // Load the Doctrine connection
  17. $conn = Doctrine_Manager::connection($conn_string);
  18.  
  19. // Load the models for the autoloader
  20. Doctrine::loadModels(APPPATH . DIRECTORY_SEPARATOR . 'models/doctrine');
  21.  
  22. ... dalej są jeszcze ustawienia profilera Doctrine, ale nie korzystam chwilowo
  23.  

4. W głównym kontrolerze ustanawiam połączenie:
  1. $this->db = Doctrine_Manager::connection(Kohana::config('core.database_dns'));


PS. W punkcie 3. jest zmienna $conn_string, która bierze wartości z config/database.php, ale ja mam tam jakieś domyślne i w niczym to nie przeszkadza (znaczy nie jest to używane).

PPS. Mogłem coś pominąć, no i powyższe rozwiązanie może nie być optymalne... ale działa smile.gif Jak ktoś ma pomysły na zrobienie tego lepiej, to chętnie posłucham winksmiley.jpg
starach
Dzięki ~magnus ale jakąś chwilę temu udało mi się uruchomić doctrine według opisu z http://www.mapledesign.co.uk/projects/kohana-doctrine/ Nie wiem co wcześniej nie działało musiałem coś pochrzanić. W każdym razie ten opis poskutkował. Na dodatek moduł który trzeba zainstalować jest do ściągnięcia z tej strony.
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.