私は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 オブジェクトから抽象化されることに注意してください。知る必要はありません。フィールド/マッピングを接続するセットアップデータベースのみ。および addRelation を使用して、関係を他の dbObjects に接続します。
また、dbObject クラスでさえ SQL についてあまり知りません。選択/結合クエリは、特別な QueryBuilder オブジェクトによって構築されます。