我已经在我的Pork.dbObject中解决了这个问题。一定要检查一下并抓住我已经做过的一些脑力劳动:P
class Poll extends dbObject // dbObject is my ORM. Poll can extend it so it gets all properties.
{
function __construct($ID=false)
{
$this->__setupDatabase('polls', // db table
array('ID_Poll' => 'ID', // db field => object property
'strPollQuestion' => 'strpollquestion',
'datPublished' => 'datpublished',
'datCloseDate' => 'datclosedate',
'enmClosed' => 'enmclosed',
'enmGoedgekeurd' => 'enmgoedgekeurd'),
'ID_Poll', // primary db key
$ID); // primary key value
$this->addRelation('Pollitem'); //Connect PollItem to Poll 1;1
$this->addRelation('Pollvote', 'PollUser'); // connect pollVote via PollUser (many:many)
}
function Display()
{
// do your displayíng for poll here:
$pollItems = $this->Find("PollItem"); // find all poll items
$alreadyvoted = $this->Find("PollVote", array("IP"=>$_SERVER['REMOTE_ADDR'])); // find all votes for current ip
}
请注意,通过这种方式,任何数据库或 ORM 功能都从 Poll 对象中抽象出来。它不需要知道。只是用于连接字段/映射的 setupdatabase。和 addRelation 连接到其他 dbObjects 的关系。
此外,即使是 dbObject 类也不太了解 SQL。选择/连接查询是由一个特殊的 QueryBuilder 对象构建的。