Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Doctrine][ZF] Błąd podczas ładowania modelu
Forum PHP.pl > Forum > Gotowe rozwiązania > Skrypty obsługi baz danych
snapshot
Zintegrowałem Doctrine z Zendem. O ile integracja ZF 1.9 z Doctrine 1.1 była bezproblemowa, to przejście na doctrine 1.2 już stworzyło problem. Zamieniłem pliki z biblioteką doctrine i pojawia się błąd:

Kod
Fatal error: Class 'BaseVideo' not found in C:\wamp\www\musictube\application\models\Video.php on line 15
Call Stack
#    Time    Memory    Function    Location
1    0.0033    364112    {main}( )    ..\index.php:0
2    0.2331    5746704    Zend_Application->run( )    ..\index.php:26
3    0.2331    5746704    Zend_Application_Bootstrap_Bootstrap->run( )    ..\Application.php:358
4    0.2339    5746880    Zend_Controller_Front->dispatch( )    ..\Bootstrap.php:77
5    0.2610    6407128    Zend_Controller_Dispatcher_Standard->dispatch( )    ..\Front.php:946
6    0.2843    6697440    Zend_Controller_Action->dispatch( )    ..\Standard.php:289
7    0.2848    6700656    IndexController->indexAction( )    ..\Action.php:513
8    0.2850    6700736    Doctrine_Core::getTable( )    ..\IndexController.php:30
9    0.2851    6700736    Doctrine_Manager->getConnectionForComponent( )    ..\Core.php:1071
10    0.2851    6700736    Doctrine_Core::modelsAutoload( )    ..\Manager.php:550
11    0.2858    6719472    require( 'C:\wamp\www\musictube\application\models\Video.php' )    ..\Core.php:1123
 

Czyli jakby przestawał widzieć plik bazowy w models/generated. Co to może być?

murwazy
http://www.doctrine-project.org/upgrade/1_2
czytales to?
snapshot
Wcześniej nie, ale dalej nie widzę tam nic co by mogło być przyczyną. Najdziwniejsze jest to że gdy mam ustawione:
Kod
$manager->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_AGGRESSIVE);

To ma problem z ładowaniem innego modelu (base) z którego w tej chwili nie korzystam:
Kod
Fatal error: Class 'BaseArtist' not found in C:\wamp\www\musictube\application\models\Video.php on line 15

Dodałem mu natomiast przed deklaracją klasy Artist:
Kod
require_once 'generated/BaseArtist.php';

I wtedy WSZYSTKO działa. Nawet inne modele w których tego nie ustawiłem.
murwazy
no wiesz - skoro nie moze zaladowac klasy to oznacza ze sciezki sa zle...
snapshot
Mam strukture
Kod
/application
  /models
    Video.php
    /generated
              BaseVideo.php

Model rozszerzalny np: Video.php ładuje dobrze. Natomiast gdy chce załadować BaseVideo.php to się wywala. Ścieżki do Base... się nigdzie nie ustawia, domyślnie jest właśnie do katalogu /generated ustawiona i nic w związku z tym nie zmieniałem. Przypominam, że w wersji 1.1 działa bez problemu
seth-kk
moze to dlatego ze 1.2 jest ciagle beta?
uzyj wersji stable
tak na margineie - skoro inkudujesz te klase za pomoca sciezki generated/BaseArtist.php to czy nie powinna sie ona nazywac Generated_BaseArtist aby autoloader mogl ja poprawnie zlokalizowac?
snapshot
Właśnie chodzi o to że chcę przejść z wersji 1.1 na 1.2 bo posiada kilka przydatnych ficzerów, a poza tym niedługo wyjdzie wersja stabilna a do tego czasu projekt na pewno jeszcze nie będzie gotowy. BaseArtist - tak się nazywa bo tak mi wygenerował Doctrine. Wersja 1.2 robiła tak samo. Jak napisałem jest sposób aby zadziałało (dodając do pierwszego wg alfabetu modelu require_once), więc źle wczytuje tylko w jakimś przypadku i nie wiem czy z mojej, czy może jednak z winy ORMa...
drPayton
Witam!

1.2 jest już wersją stabilną, mam dokładnie ten sam problem. Czy komuś udało się go rozwiązać?
Zyx
W Doctrine 1.2 został zmieniony mechanizm ładowania modeli. Wszystko jest bardzo elegancko opisane tutaj:

http://www.doctrine-project.org/upgrade/1_2

pod linkiem "PEAR Style Model Loading and Generation". Jak widać, należy zarejestrować specjalny autoloader i ustawić w nim ścieżkę do modeli.
drPayton
metoda generateModelsFromDb generuje modele po staremu, czyli modele Base* w podkatalogu generated. Po przerzuceniu ich do głównego folderu modeli działa jak należy.

Czy zatem setModelsDirectory należy ustawić dwukrotnie? Raz dla głównego folderu modeli i drugi raz dla podkatalogu generated? (wówczas działa poprawnie, ale po mojemu są tu luki w dokumentacji...)
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-2024 Invision Power Services, Inc.