1

我有一个DebatePagehas_many 投票:

static $has_many = array(
    'Votes' => 'Vote'
);  

和相应的Vote DataObject

static $belongs_to = array(
    'DebatePage' => 'DebatePage'
);

当用户单击“是”时,我想为该页面保存投票。

它的语法是什么?

我想做这样的事情:

$this->dataRecord->Votes()->add($array('motion' => true));

我该如何正确地做到这一点?

4

3 回答 3

7

类似于@3dgoo 写的,但语法不同,利用::create()

$vote = Vote::create(array(
    'Motion' => true
));
$this->Votes()->add( $vote );

这意味着在您DebatePageVote关系上称为Votes$belongs_to仍然需要更改为$has_one-关系。

于 2013-07-31T06:44:58.293 回答
2

这是在数据库中创建新投票的函数:

public function SubmitVote() {
    $vote = new Vote();
    $vote->DebatePageID = $this->ID;
    $vote->Motion = true;
    $vote->write();
}

请注意,您的VoteDataObject 应该有一个$has_one关系,DebatePage而不是$belongs_to

static $has_one = array(
    'DebatePage' => 'DebatePage'
); 
于 2013-07-31T05:54:24.040 回答
0

如果需要,您可以手动将对象添加到 has_many,但它已经自动完成。如果你使用$object->ForreignID = $hasOneObject->ID,后跟$form->saveInto($object),它会自动将对象添加到has_many关系中。

于 2014-09-08T06:46:54.153 回答