[Propel] Relacja jeden do wielu / wiele do wielu., I kilka innych pytań. |
[Propel] Relacja jeden do wielu / wiele do wielu., I kilka innych pytań. |
17.12.2008, 11:54:30
Post
#1
|
|
Grupa: Zarejestrowani Postów: 999 Pomógł: 30 Dołączył: 14.01.2007 Skąd: wiesz ? Ostrzeżenie: (0%) |
Chciałbym użyć Propel'a w swoim frameworku. Niestety mam z nim parę problemów.
schema.xml Kod <?xml version="1.0" encoding="utf-8"?> Ładnie generuje mi się abstrakcja ( _u_id - jeszcze nie jest zaimplementowane )<!--Autogenerated by PropelSchemaReverseTask class.--> <database name="orglee" defaultIdMethod="native"> <table name="article_categories" phpName="Categories"> <column name="acs_id" type="INTEGER" size="11" primaryKey="true" autoIncrement="true" required="true"/> <column name="acs_name" type="VARCHAR" size="256" required="false"/> <column name="acs_color" type="VARCHAR" size="9" required="false"/> </table> <table name="article_category" phpName="Category"> <column name="_al_id" type="INTEGER" size="11" primaryKey="true" required="true"/> <column name="_acs_id" type="INTEGER" size="11" required="false"/> <foreign-key foreignTable="article_list"> <reference local="_al_id" foreign="al_id"/> </foreign-key> <foreign-key foreignTable="article_categories"> <reference local="_acs_id" foreign="acs_id"/> </foreign-key> </table> <table name="article_list" phpName="Article"> <column name="al_id" type="INTEGER" size="11" primaryKey="true" autoIncrement="true" required="true"/> <column name="al_title" type="VARCHAR" size="256" required="false"/> <column name="al_desc" type="LONGVARCHAR" required="false"/> <column name="al_content" type="LONGVARCHAR" required="false"/> <column name="al_date_added" type="TIMESTAMP" required="false"/> <column name="al_date_update" type="TIMESTAMP" required="false"/> <column name="_u_id" type="INTEGER" size="11" required="false"/> </table> </database> Połączenie i test: Pomińmy na razie ścieżki, ale z tym też mam mały kłopot. No i teraz problem numero uno. var_dump() wyświetla mi następujące wyniki ( pominąłem kilka prywatnych pół żeby skrócić wynik ) Kod object(Module_Articles_Model_ORM_Article)[7] Przede wszystkim propel nie pobrał mi wszystkich kategorii artykułów. Testowy artykuł podpiąłem pod dwie kategorie. Drugim problemem jest ten bezsensowny adapter 'Category'. Najpierw muszę pobrać z artykułu adapter a potem dopiero kategorię.protected 'al_id' => int 1 protected 'al_title' => string 'Tytuł pierwszego' (length=17) protected 'al_desc' => string 'Opis pierwszego artykułu' (length=25) protected 'al_content' => string 'Treść pierwszego artykułu' (length=28) protected 'al_date_added' => string '0000-00-00 00:00:00' (length=19) protected 'al_date_update' => string '0000-00-00 00:00:00' (length=19) protected '_u_id' => int 1 protected 'singleCategory' => object(Module_Articles_Model_ORM_Category)[10] protected '_al_id' => int 1 protected '_acs_id' => int 2 protected 'aArticle' => null protected 'aCategories' => object(Module_Articles_Model_ORM_Categories)[15] protected 'acs_id' => int 2 protected 'acs_name' => string 'Cat 2' (length=5) protected 'acs_color' => null protected 'collCategorys' => null private 'lastCategoryCriteria' => null protected 'alreadyInSave' => boolean false protected 'alreadyInValidation' => boolean false protected 'validationFailures' => Było by wielkim uproszczeniem gdyby dało się połączyć ...ORM_Category i ORM_Categories w taki sposób żeby metoda z ORM_Article zwracała mi tablicę z obiektową reprezentacją kategorii. Czy jest to wykonalne? Tak na marginesie chciałbym dodać że przeczytałem http://propel.phpdb.org/trac/wiki/Users/Do...nyRelationships i niestety w moich obiektach nie wiedzieć czemu nie ma żadnej metody z Join w nazwie. Lecimy dalej. Kolejną sprawą z którą mam kłopot to podział na katalogi. Zapewne zwróciliście uwagę na diabelnie długie nazwy obiektów. Dlatego są one takie bo chciałem umieścić abstrakcję danych w katalogach modułów czyli [root]/module/Articles/Model/ORM/etc... Kiedy zainicjowałem propela zdałem sobie sprawę z tego że w większości fw modele są umieszczane w jednym katalogu. Chciałbym żebyście mi pomogli rozpatrzeć dwie możliwości ich składowania. 1) j/w w katalogach modułów i 2) w jednym katalogu ogólnym. Nie wiem nawet czy pierwszy przypadek jest możliwy. Bo może zachodzić potrzeba wielokrotnej inicjalizacji propela z różnymi plikami konfiguracyjnymi. W drugim nie podoba mi się rozprzestrzenienie bibliotek. Jeśli bym chciał kiedyś zrobić z mojego fw cms i udostępnić. Spory kłopot sprawiłaby mi implementacja systemu paczek z rozszerzeniami właśnie przez abstrakcyjny dostęp do danych składowany w jednym katalogu ( kopiowanie plików sprawdzanie wersji nadpisywanie etc. ). Ostatnią sprawą jest możliwość korzystania z bibliotek generowanych przez Propela z innych jego bibliotek. Przykładem może być wspomniane wcześniej pole _u_id. Chciałbym żeby model User był częścią FW, a nie dodatkową biblioteką. Więc może zajść spora rozbieżność ścieżek do plików z klasami. [root]/engine/User/klasy Oprócz tego pozostaje problem pobierania np. Artykułów przez User i odwrotnie. No i czy przy okazji dodania nowego modułu lub jego modyfikacji będę musiał generować wszystko na nowo? |
|
|
Wersja Lo-Fi | Aktualny czas: 23.05.2024 - 15:41 |