Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
abstract class VotingTable extends Zend_Db_Table_Abstract {
protected $_rowClass = 'Voting';
/**
* @return Zend_Db_Select
*/
abstract function getTableType();
}
class Voting extends Zend_Db_Table_Row_Abstract {
protected $_tableType;
public function init() {
$this->_tableType = $this->getTable()->getTableType();
}
public function setRating($user, $amount) { /* ... */ }
public function getRating() { /* ... */ }
public function isVoted($user_id) { /* ... */ }
}
Entity: (id:autoincrement, type:int) , PK(id), FK(type -> EntityType.id)
EntityType: (id:int, name:string), PK(id), FK(id -> Entity.id)
User: (id:int, firstname:string)
, PK(id), FK(id -> Entity.id)
Article: (id:int, user:int)
, PK(id), FK(id -> Entity.id), FK(user -> User.id)
Comment: (id:int, user:int, item:int)
, PK(id), FK(id -> Entity.id), FK(user -> User.id), FK(item -> Entity.id)
Vote: (id:int, user:int, item:int)
, PK(id), FK(id -> Entity.id), FK(user -> User.id), FK(item -> Entity.id)
Entity2Table: (entity:int, class:int)
, PK(entity, class), FK(entity -> Entity.id, ), FK(class -> Table.id)
Table: (int:int, name:string)
, PK(id), FK(id -> Entity.id)
EntityType2Table: (entity_type:int, table:int)
, PK(entity_type, table), FK(entity_type -> EntityType.id, ), FK(table -> Table.id)
Table: (int:int, name:string)
, PK(id), FK(id -> Entity.id)
Сущностей много — код один