0

由于我的代码一半有效,因此很难解释。

基本上这就是我所拥有的:

public function add() {
    $this->set('branchingQuestions', $this->BranchingQuestion->find('all'));

    if ($this->request->is('post')) {
        $_POST['data']['Job']['branchingQuestions'] = mysql_escape_string(serialize($_POST['data']['Job']['branchingQuestions']));
        var_dump($_POST['data']['Job']);
        //die;
        $this->Job->create();
        if ($this->Job->save($this->request->data)) {
            $this->Session->setFlash(__('The job has been saved.'));
            return $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The job could not be saved. Please, try again.'));
        }
    }
}

这是在 Cake PHP 控制器中。大多数代码都是通过 Bake 生成的。

无论如何,在我的 POST 数组中是另一个名为 branchingQuestions 的数组,因为它是一个数组,所以在插入时会出现您所期望的错误。然而,从 var_dump 我得知该数组已成功序列化,现在是一个字符串,与 POST 的其余内容相同。所以它应该工作。

然而,通过测试一些事情,CakePHP 似乎甚至没有意识到我已经使用序列化行更新了数组。即使我的 var_Dump 另有建议,它也好像从未发生过一样。

['data']['job'] 包含我所有的字符串和 int,例如 ['data']['job']['title'] 并且它们可以很好地插入,但是为了测试我的理论,我还更改了 ['title '] 像这样:

$_POST['data']['Job']['title'] = 120;

哪个应该让 SQL 给出错误,因为标题是一个字符串。但它甚至没有改变标题在我的表中仍然是“测试”。

branchingQuestions 是这样发布的:

<select name='data[Job][branchingQuestions][question" + branchCount + "]'

我有一个动态表单,您可以在需要时添加更多选择框,这就是为什么我在问题部分有一个变量。所有这些工作正常,var_dump 给了我我所期望的。

4

1 回答 1

1

您实际上必须编辑 $this->request->data 数组而不是 $_POST 数组。

于 2013-11-07T16:11:28.770 回答