DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   PHP (http://www.devprotalk.com/forumdisplay.php?f=9)
-   -   Pitanje vezano za ORM (http://www.devprotalk.com/showthread.php?t=8667)

djomla_db 12. 04. 2010. 11:19

Pitanje vezano za ORM
 
Zdravo!

Muci me jedan problem pa ako moze neko da pomogne ko ima slicnih iskustava.

Vec dugo radim sve svoje projekte sa ADODB active record klasama. U zadnje vreme dosta sam citao doctrine i vidim da za razliku od pocetaka sad je dosta bogatiji sa featurima i dokumentacijom. Pa sam poceo da projektujem CMS ponovo ali sa Doctrinom. Mogu rec, elegantno se postavi ali dosao sam do problema prvog i za sada najgoreg (cak razmisljam da je batalim). Problem su njeni 'behavior'i, da budem precizniji i18n (pretpostavljam da se ovo odnosi na svaki). Potrebna mi je lokalizacija na bilo koji jezik i to se radi sa doctrinom tako sto se kaze actAs: I1i8n odabere se polje i stvar 'resena'.

E, al to meni ne odgovara (tvrdoglav) hocu da bude kako ja 'ocu a ne kako neko drugi to kaze. Zelim da bude i18n oznake tablica i klasa. I kaze meni doctrina (tacnije otvorim klasu i vidim koje parametre prima)

actAs: I18n
className: '%CLASS%i18n' => kaze da klase imaju taj i taj prefix
tableName: '%TABLE%i18n' => odlicno ovako mi i treba a ne kako oni hoce to od mene da bude _translation.

posto radim na postojecim tablicama i bazom recimo da mi se tablica zove pages a druga je pagesi18n

e sad ja generisem modele na osnovu tablice i to fino ne radi. (mogu cak i da dam kod ovde)

Kôd:

class Pages extends BasePages
{

        $this->actAs('I18n', array(
                'fields' => array('title'),
                'className' => '%CLASS%i18n',
                'tableName' => '%TABLE%i18n'
            )
        );
    }


I baca gresku konstatno da fali title i sl. Izludjuje pomalo.

Kod AdoDBa samo mozda malo vise programirao ali brate imao sam skoro potpunu kontrolu nad skoro svime. Ne znam sta mi to revolucionarno pruza koriscenje Doctrine ili bilo kojeg hard core ORMa (ovo bi bilo drugo pitanje).

LiquidBrain 12. 04. 2010. 16:11

Citat:

Originalno napisao djomla_db (Napišite 83128)
Zdravo!

Muci me jedan problem pa ako moze neko da pomogne ko ima slicnih iskustava.

Vec dugo radim sve svoje projekte sa ADODB active record klasama. U zadnje vreme dosta sam citao doctrine i vidim da za razliku od pocetaka sad je dosta bogatiji sa featurima i dokumentacijom. Pa sam poceo da projektujem CMS ponovo ali sa Doctrinom. Mogu rec, elegantno se postavi ali dosao sam do problema prvog i za sada najgoreg (cak razmisljam da je batalim). Problem su njeni 'behavior'i, da budem precizniji i18n (pretpostavljam da se ovo odnosi na svaki). Potrebna mi je lokalizacija na bilo koji jezik i to se radi sa doctrinom tako sto se kaze actAs: I1i8n odabere se polje i stvar 'resena'.

E, al to meni ne odgovara (tvrdoglav) hocu da bude kako ja 'ocu a ne kako neko drugi to kaze. Zelim da bude i18n oznake tablica i klasa. I kaze meni doctrina (tacnije otvorim klasu i vidim koje parametre prima)

actAs: I18n
className: '%CLASS%i18n' => kaze da klase imaju taj i taj prefix
tableName: '%TABLE%i18n' => odlicno ovako mi i treba a ne kako oni hoce to od mene da bude _translation.

posto radim na postojecim tablicama i bazom recimo da mi se tablica zove pages a druga je pagesi18n

e sad ja generisem modele na osnovu tablice i to fino ne radi. (mogu cak i da dam kod ovde)

Kôd:

class Pages extends BasePages
{

        $this->actAs('I18n', array(
                'fields' => array('title'),
                'className' => '%CLASS%i18n',
                'tableName' => '%TABLE%i18n'
            )
        );
    }

I baca gresku konstatno da fali title i sl. Izludjuje pomalo.

Kod AdoDBa samo mozda malo vise programirao ali brate imao sam skoro potpunu kontrolu nad skoro svime. Ne znam sta mi to revolucionarno pruza koriscenje Doctrine ili bilo kojeg hard core ORMa (ovo bi bilo drugo pitanje).

kod ti nije dobar,
Prvo actAs metod treba da se zove iz setUp metode, dakle nesto kao:
Kôd:


class Pages extends BasePages
{

        public function setUp()
        {
            parent::setUp();

            $this->actAs('I18n', array(
                'fields' => array('title'),
                'className' => 'Pagesi18n',
                'tableName' => 'pagesi18n'
              ));
    }

Ne znam zasto koristish %CLASS% i %TABLE% svakako ti se ovaj kod ne generise automatski, pa mozes i da upishesh ime...

Daj base klasu da vidimo dal tu fali nesto od polja...

Pozz

vladapopster 08. 11. 2010. 17:53

Doctrine
 
Doctrine i bez muke :)


Vreme je GMT +2. Trenutno vreme je 11:32.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.