Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

PHP Active record

[es] :: PHP :: PHP Active record

[ Pregleda: 923 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

rajkoBekrija

Član broj: 123164
Poruke: 53
*.broadband.blic.net.



Profil

icon PHP Active record13.04.2009. u 01:05 - pre 183 meseci
E ovako ljudi, posto vecina u web razvoju koristi MySQL (MyISAM) kao data storage mislim da je dobro da se napravi neki tip active recorda.

Ok, kao sto vecina voli da filozofira u ovim dijelovima foruma :), za pocetak mislim da je najvaznije da se vidi kako bi se u kodu vrsila manipulacija sa tim klasama.

Trebali bi napisati kako bi voljeli da se vrse CRUD akcije. Ne bih koristio propel i ostale frameworke posto mislim da su preglomazni, spori, pogotovo kod zahtjeva za JOINom.

Uvjeren sam da mozemo napraviti extra flaksibilno i lako upotrebljivo rjesenje.

Pa evo da ja prvi pocnem, znaci primjer
Code:

// CREATE
$RU = new RUser();
$RU -> username     = 'test';
$RU -> password     = 'pass';
$RU -> date_added  = 'NOW()'; // reserved mysql word
$RU -> Insert();

// UPDATE
$RU -> password = 'pass2';
$RU -> Update();

// DELETE
$RU -> Delete();

// RETRIVE
$Sql[] = Rec::Safe('username = ? OR password = ?', $UsernameVar, $PasswordVar);
$Sql[] = Rec::Safe('date_added > ?', date('Y-m-d', strtotime("-1 day")));
$Sql[] = Rec::Safe('Departments.id IN (?)', $ArrayOfIds);
$Sql[] = Rec::Safe('UserInfo.first_name LIKE ?', '%'.$FirstNameVar);

foreach( RUser::WithDepartments::WithUserInfo::Select($Sql) as $User){
    // Ovo ce prouzrokovati JOIN usera sa Departments i sa UserInfo u jednom query-u
   print $User -> username.' - '.$User -> UserInfo -> first_name.' '.$User -> UserInfo -> last_name."\n";
   foreach($User -> Departments as $Dept)
      print  $Dept -> name."\n";
}


i sada je naravno bitno da se vidi kako bi izgledale te klase.

npr RUser.php
Code:

class RUser extends NekoImeKlase{
   const TABLE = 'users';
   const PRIMARY = 'user_id';

   public $user_id;
   public $username;
   public $password;
   public $date_added;

   public $Departments;
   public $UserInfo;

   public static $RELATIONS = array(
      array('Departments', RDepartments, self::HAS_MANY),
      array('UserInfo', RUserInfo, self::HAS_ONE)
   );

}


Dajte da vidim vase prijedloge






 
Odgovor na temu

misk0
.: Lugano :. _.: CH :.

SuperModerator
Član broj: 634
Poruke: 2824
62.48.103.*

ICQ: 46802502


+49 Profil

icon Re: PHP Active record15.04.2009. u 19:35 - pre 183 meseci
jesi probao da vidis dokumentaciju codeIgnitera? On ima tu funkcionalnost uradjenu i dobro radi.

:: Nemoj se svadjati sa budalom, ljudi cesto nece primjetiti razliku ::
 
Odgovor na temu

[es] :: PHP :: PHP Active record

[ Pregleda: 923 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.