我有一张DebatePage
,其中有很多票:
static $has_many = array(
'Votes' => 'Vote'
);
以及相应的Vote
DataObject
static $belongs_to = array(
'DebatePage' => 'DebatePage'
);
当用户点击“是”时,我想保存该页面的投票。
这是什么语法?
我希望做这样的事情:
$this->dataRecord->Votes()->add($array('motion' => true));
我该如何正确地做到这一点?
答案 0 :(得分:7)
类似于@ 3dgoo所写的但使用不同的语法,利用::create()
:
$vote = Vote::create(array(
'Motion' => true
));
$this->Votes()->add( $vote );
这意味着在DebatePage
Vote
关系被称为投票。 $belongs_to
仍需要更改为$has_one
- 关系。
答案 1 :(得分:2)
这是在数据库中创建新投票的功能:
public function SubmitVote() {
$vote = new Vote();
$vote->DebatePageID = $this->ID;
$vote->Motion = true;
$vote->write();
}
请注意,您的Vote
DataObject应该$has_one
关系回DebatePage
而不是$belongs_to
:
static $has_one = array(
'DebatePage' => 'DebatePage'
);
答案 2 :(得分:0)
如果需要,您可以手动将对象添加到has_many,但它已经自动完成。如果您使用$ object-> ForreignID = $ hasOneObject-> ID,后跟$ form-> saveInto($ object),它会自动将对象添加到has_many关系。