[ _ikac @ 14.02.2013. 12:46 ] @
Dali bi neko mogao da mi pojasni zasto korisnici koriste orm i yml.
Nemogu da skontam potrebu kao npr doctrine sto radi.

Sve to sto doctrine nudi to nudi moze se uraditi i u zend fw i ci fw ali samo sto nije ORM. Zasto mora da je orm i zasto ga toliko forsiraju na elance? Nije mi jasno.

Resio sam da krenem sa doctrine ali nekontam zasto bi radio nesto sto zahteva vise kodiranja i vise vremena. U zend i CI FW jednostavno napravim samo model npr sa metodama getAllUser(), addUser(), deleteUser() itd... i povezem sa controllerom i to je ceo posao. Dok u doktrine pravim model pa pravim yml i plus koliko vidim da u doctrine modeli su potpuno drugaciji.

Ci model npr
Code:

class User extends CI_Model {
      public function __construct() {
           parent::__construct();
      }

    public function getAllUser() {
        $query = $this->db->query("SELECT * FROM user");
        if($query->num_rows() > 0 ){
             return $query->result();
       }

    }
}


Dok doctrine zahteva da definisem sve kolone u tabeli

Code:

abstract class BaseUser extends Doctrine_Record
{
    public function setTableDefinition()
    {
        $this->setTableName('user');
        $this->hasColumn(
            'id', 'integer', 8,
            array(
                'type' => 'integer',
                'length' => 8,
                'primary' => true,
                'autoincrement' => true
            )
        );
        $this->hasColumn(
            'first_name', 'string', 255,
            array(
                'type' => 'string',
                'length' => 255
            )
        );
        $this->hasColumn(
            'last_name', 'string', 255,
            array(
                'type' => 'string',
                'length' => 255
            )
        );
    }
}


Pa posle YML
Code:

User:
tableName: user
columns:
  id:
    type: integer(8)
    primary: true
    autoincrement: true
  is_active:
    type: integer(1)
    default: '1'
  is_super_admin:
    type: integer(1)
    default: '0'
  created_at:
    type: timestamp(25)
    notnull: true
  updated_at:
    type: timestamp(25)
    notnull: true
  first_name: string(255)
  last_name: string(255)
  username: string(255)
  password: string(255)
  type: string(255)


Ovo je previse koda za jednu operaciju bar po meni.
U cemu je razlika zasto ga toliko forsiraju sve ovo uradim na mnogo laksi i elegantniji nacin. Citao sam wiki o orm-u sve je to ok ali i dalje nekapiram...

Hvala.
[ dakipro @ 14.02.2013. 12:53 ] @
Ako se ne varam, pitas o ORM a stavio si kod iz doctrine v1 koji nije ORM?
[ _ikac @ 14.02.2013. 12:58 ] @
Pa ne znam tek sam krenuo to sam nasao u dokumentaciji i postavio kao test. Meni su rekli da krenem sa 1.2 i 1.3 verzijom jer ove ostale su namenjene za frameworkove.
[ _ikac @ 14.02.2013. 13:40 ] @
OK recimo skontao sam Doctrine sam generise modele. Ali pazi sada sta meni nije jasno on mi je napravio 2 fajla u modelu. Jedan je User.php [class] drugi je UserTable.php[class] i sada u kojem ja pisem logiku? Citanje,pisanje,brisanje iz tabele? Cemu sluzi User a cemu UserTable
[ dakipro @ 14.02.2013. 15:10 ] @
Sta tebe ustvari ovde zanima sad, koje je pitanje? Kako radi i cemu sluzi ORM uopste, potreba za YML anotacijom, Doctrine <2 ili Doctrine 2 ili neki framework ili nesto drugo?

Ovako kako ti sad pitas sam sebe i sam sebi odgovaras, deluje kao da uopste nisi procitao uvod u to sto si poceo da ucis pa samo imas potrebu da negde izlozis svoje nezadovoljstvo nerazumevanjem tematike. Doctrine (pogotovu verzija <2 koja skoro pa nema nista zajednicko sa verzijom 2>) je vec utemeljena biblioteka sa masom primera i tutorijala tako da su sva tvoja pitanja odavno obradjena na internetu, i u teoriji i praksi.

Licno nisam koristio Doctrine 1.x vec samo 2.x, i recimo da je jedna od velikih prednosti to sto su ti modeli skoro u potpunosti nezavisni od Doctrine ORM, tako da je pisanje testova prilicno bezbolno jer tvoji modeli ne (moraju da) extenduju nijednu biblioteku da bi orm funkcionisao.

U sustini zatrazis objekat od ORMa, izmenis neki property objekta ili njemu pridruzenih objekata (o relacijama izmedju objekata u modelu se brine sam doctrine na osnovu YML pravila [ili neki drugi nacin definisanja relacija]) i vratis ga ORM-u, a orm se bakce dovodjenjem podataka iz baze, hidratacijom objekata, njihovim relacijama, snimanjem objekata i relacija nazad u bazu i sl.

Nisam siguran da razumem komentar da je Doctrine 2 namenjen frejmvorcima, jer obe verzije su nezavisne od bilo kog frejmworka, pa jal pisao sam svoj frejmwork ili koristio neki gotovi ili koristio samo include bez ikakvog frejmworka, oba ce raditi onako kao sto pise u dokumentaciji.

Ja bi ti svejedno savetovao Doctrine 2, posto si tek poceo da ucis prakticno ti je sve jedno koju verziju ucis, a verzija 1 se vise ne razvija i odrzava, tako da ne vidim bas dobar razlog zasto bi radio sa napustenim alatom (osim ako imas jako trziste bas za tu verziju, al sumnjam da klijente bas toliko zanimaju tehnicki detalji)

[Ovu poruku je menjao dakipro dana 16.02.2013. u 12:51 GMT+1]
[ _ikac @ 16.02.2013. 12:00 ] @
Ma ja samo bio zbunjen zasto je toliko trazen Doctrine kada sve to moze da se odradi isto sa drugim klsama za bazu. tipa kao sto je ZF i CI.

Mada citajuci dokumentaciju doctrine vidim da on dosta ustedi vremena oko pisanja modela, on ih sam generise. Malo sam zbrzao pa sam zbunio ljude
[ mitke013 @ 03.03.2013. 23:14 ] @
Citat:
dakipro:
Ako se ne varam, pitas o ORM a stavio si kod iz doctrine v1 koji nije ORM?


Nego je sta; 300gr bureka sa sirom?
[ dakipro @ 04.03.2013. 08:12 ] @
Mislio sam da je neka ne-orm Active Record implementacija... "I stand corrected", v1 jeste ORM

[Ovu poruku je menjao dakipro dana 12.03.2013. u 12:18 GMT+1]