Php 正在尝试将all()保存到包含多个条目的两个单独的表中

Php 正在尝试将all()保存到包含多个条目的两个单独的表中,php,cakephp,cakephp-model,Php,Cakephp,Cakephp Model,大家好。我一辈子都不能让这个该死的saveall()函数正常工作。我说它很神奇,但我不能有足够的米迪克洛尼亚人或任何花哨的东西来获得它 所以我有四个不同的表格——问题、评论、员工和答案。问题有很多答案,答案只有一条评论。答案属于员工。以下是在我的模型中设置的内容: 应答模式 var $hasOne = array( 'Comment' => array( 'className' => 'Comment', 'foreignKey' =>

大家好。我一辈子都不能让这个该死的
saveall()
函数正常工作。我说它很神奇,但我不能有足够的米迪克洛尼亚人或任何花哨的东西来获得它

所以我有四个不同的表格——问题、评论、员工和答案。问题有很多答案,答案只有一条评论。答案属于员工。以下是在我的模型中设置的内容:

应答模式

var $hasOne = array(
    'Comment' => array(
        'className' => 'Comment',
        'foreignKey' => 'answer_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

var $belongsTo = array(
    'Question' => array(
        'className' => 'Question',
        'foreignKey' => 'question_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Employee' => array(
        'className' => 'Employee',
        'foreignKey' => 'employee_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);
var $validate = array(
    'answer_id' => array(
        'numeric' => array(
            'rule' => array('numeric'),
        ),
    ),
);

var $belongsTo = array(
    'Answer' => array(
        'className' => 'Answer',
        'foreignKey' => 'answer_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);
评论模式

var $hasOne = array(
    'Comment' => array(
        'className' => 'Comment',
        'foreignKey' => 'answer_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);

var $belongsTo = array(
    'Question' => array(
        'className' => 'Question',
        'foreignKey' => 'question_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    ),
    'Employee' => array(
        'className' => 'Employee',
        'foreignKey' => 'employee_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);
var $validate = array(
    'answer_id' => array(
        'numeric' => array(
            'rule' => array('numeric'),
        ),
    ),
);

var $belongsTo = array(
    'Answer' => array(
        'className' => 'Answer',
        'foreignKey' => 'answer_id',
        'conditions' => '',
        'fields' => '',
        'order' => ''
    )
);
当我为我的数据运行
saveall()
时,我得到一个错误,说我的注释的答案id不是数字。下面是我试图保存的数据树的设置(使用
$this->Answer->saveall($this->data);

有人能帮我找出这里出了什么问题吗?我很感谢你的帮助

编辑:我已更新$data数组,使其键从零开始,增量为1(即,
array(0=>array(),1=>array(),2=>array());
等),这消除了验证错误,但数据仍然没有保存。

试试这个:

$this->Answer->saveall($this->data['Answer']);
$this->Comment->saveall($this->data['Comment']);

出于某种原因,cakephp有时不会自动保存相关表的所有记录,即使您定义了它们的关系。我仍在试图找出原因。

SaveAll只是不保存其他相关表。我们完全按照您所说的做,我们自己定义它们,我们甚至手动链接id。这有点痛苦,但这是最好的操作注意。

谢谢你的帮助。这会同时保存它们,但不幸的是,
答案id
不会自动为注释设置。你知道如何解决这个问题吗?@beanland:是的,有一种方法,但如果只有一个“答案”和多个“注释”,通常会起作用。当你保存“答案”时,你会得到它的id($This->answer->id;),然后创建一个循环将其保存到每个注释($this->data['comment']['answer\u id'])。如您所见,您不能同时使用多个注释保存多个答案,因为我们不知道哪个注释属于哪个答案。