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";
}
// 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)
);
}
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