Php 保存模型和相关模型数据的HTTPPOST应该是什么样子?

Php 保存模型和相关模型数据的HTTPPOST应该是什么样子?,php,cakephp,post,http-post,cakephp-2.0,Php,Cakephp,Post,Http Post,Cakephp 2.0,我使用的是CakePHP2.4.5。我有两个具有一对多关系的表。表B属于表A 我希望表a中有一个控制器,可以保存表a和表B中的记录。控制器代码应该很简单,如下所示 public function add_tableA($id=null) { if ($this->request->is('post')) { $this->layout = null ; $this->TableA->create();

我使用的是CakePHP2.4.5。我有两个具有一对多关系的表。表B属于表A

我希望表a中有一个控制器,可以保存表a和表B中的记录。控制器代码应该很简单,如下所示

public function add_tableA($id=null)
{
    if ($this->request->is('post')) 
    {
        $this->layout = null ;
        $this->TableA->create();                
        $this->TableA->saveAll($this->request->data, array('deep' => true));
    }
}
我的问题出现在尝试向控制器发送正确的HTTP POST格式时

我试图以HTTP方式发布下面的数据格式,但失败了

data[TableA][field1] = field1_value
data[TableA][field2] = field2_value
data[TableB][field1] = field1_value
data[TableB][field2] = field2_value
然后,我尝试HTTP发布下面的数据格式,至少填充了TableA字段

data[TableA][field1] = field1_value
data[TableA][field2] = field2_value
如果要为两个表创建行,HTTP POST数据格式应该是什么样子?

请参阅:

和saveAssociated的示例:

$data = array(
    'Article' => array('title' => 'My first article'),
    'Comment' => array(
        array('body' => 'Comment 1', 'user_id' => 1),
        array('body' => 'Comment 2', 'user_id' => 12),
        array('body' => 'Comment 3', 'user_id' => 40),
    ),
);
所以,在你的情况下,发布类似

data[TableA][field1] = field1_value
data[TableA][field2] = field2_value
data[TableB][0][field1] = field1_value
data[TableB][0][field2] = field2_value
data[TableB][1][field1] = field1_value
data[TableB][1][field2] = field2_value
etc
以及:

见:

和saveAssociated的示例:

$data = array(
    'Article' => array('title' => 'My first article'),
    'Comment' => array(
        array('body' => 'Comment 1', 'user_id' => 1),
        array('body' => 'Comment 2', 'user_id' => 12),
        array('body' => 'Comment 3', 'user_id' => 40),
    ),
);
所以,在你的情况下,发布类似

data[TableA][field1] = field1_value
data[TableA][field2] = field2_value
data[TableB][0][field1] = field1_value
data[TableB][0][field2] = field2_value
data[TableB][1][field1] = field1_value
data[TableB][1][field2] = field2_value
etc
以及:

见:

和saveAssociated的示例:

$data = array(
    'Article' => array('title' => 'My first article'),
    'Comment' => array(
        array('body' => 'Comment 1', 'user_id' => 1),
        array('body' => 'Comment 2', 'user_id' => 12),
        array('body' => 'Comment 3', 'user_id' => 40),
    ),
);
所以,在你的情况下,发布类似

data[TableA][field1] = field1_value
data[TableA][field2] = field2_value
data[TableB][0][field1] = field1_value
data[TableB][0][field2] = field2_value
data[TableB][1][field1] = field1_value
data[TableB][1][field2] = field2_value
etc
以及:

见:

和saveAssociated的示例:

$data = array(
    'Article' => array('title' => 'My first article'),
    'Comment' => array(
        array('body' => 'Comment 1', 'user_id' => 1),
        array('body' => 'Comment 2', 'user_id' => 12),
        array('body' => 'Comment 3', 'user_id' => 40),
    ),
);
所以,在你的情况下,发布类似

data[TableA][field1] = field1_value
data[TableA][field2] = field2_value
data[TableB][0][field1] = field1_value
data[TableB][0][field2] = field2_value
data[TableB][1][field1] = field1_value
data[TableB][1][field2] = field2_value
etc
以及:


为了像这样保存它,您需要:

data[TableB][TableA_id] = 'id of data saved be to TableA';
对于要保存的TableB数据。因此,我认为您需要首先保存TableA:

$dataA = $this->TableA->save('data for TableA');
if (!$dataA) {
   $data['TableB']['TableA_id'] = $this->TableA->id;
   $this->TableA->TableB->save('data array for TableB');
}

为了像这样保存它,您需要:

data[TableB][TableA_id] = 'id of data saved be to TableA';
对于要保存的TableB数据。因此,我认为您需要首先保存TableA:

$dataA = $this->TableA->save('data for TableA');
if (!$dataA) {
   $data['TableB']['TableA_id'] = $this->TableA->id;
   $this->TableA->TableB->save('data array for TableB');
}

为了像这样保存它,您需要:

data[TableB][TableA_id] = 'id of data saved be to TableA';
对于要保存的TableB数据。因此,我认为您需要首先保存TableA:

$dataA = $this->TableA->save('data for TableA');
if (!$dataA) {
   $data['TableB']['TableA_id'] = $this->TableA->id;
   $this->TableA->TableB->save('data array for TableB');
}

为了像这样保存它,您需要:

data[TableB][TableA_id] = 'id of data saved be to TableA';
对于要保存的TableB数据。因此,我认为您需要首先保存TableA:

$dataA = $this->TableA->save('data for TableA');
if (!$dataA) {
   $data['TableB']['TableA_id'] = $this->TableA->id;
   $this->TableA->TableB->save('data array for TableB');
}


你的表单看起来怎么样?我没有使用HTML表单。不使用cakephp视图。我打算将Cakephp纯粹用作RESTAPI服务器。我正在使用python直接发送HTTP Post。这就是为什么我需要知道HTTP Post中要发送的数据格式。我认为,应该使用saveAssociated()而不是saveAll()。检查其官方网站上的数据结构。@Vikash Pathak:我尝试了saveAssociated(),但仍然不起作用。例如,TableB属于TableA,我认为在这种情况下,您无法从TableA保存,您是否尝试从TableB保存?您必须向tableA添加关系,其中
tableA有许多TableB
。你的模型中有吗?你的表单是什么样子的?我没有使用HTML表单。不使用cakephp视图。我打算将Cakephp纯粹用作RESTAPI服务器。我正在使用python直接发送HTTP Post。这就是为什么我需要知道HTTP Post中要发送的数据格式。我认为,应该使用saveAssociated()而不是saveAll()。检查其官方网站上的数据结构。@Vikash Pathak:我尝试了saveAssociated(),但仍然不起作用。例如,TableB属于TableA,我认为在这种情况下,您无法从TableA保存,您是否尝试从TableB保存?您必须向tableA添加关系,其中
tableA有许多TableB
。你的模型中有吗?你的表单是什么样子的?我没有使用HTML表单。不使用cakephp视图。我打算将Cakephp纯粹用作RESTAPI服务器。我正在使用python直接发送HTTP Post。这就是为什么我需要知道HTTP Post中要发送的数据格式。我认为,应该使用saveAssociated()而不是saveAll()。检查其官方网站上的数据结构。@Vikash Pathak:我尝试了saveAssociated(),但仍然不起作用。例如,TableB属于TableA,我认为在这种情况下,您无法从TableA保存,您是否尝试从TableB保存?您必须向tableA添加关系,其中
tableA有许多TableB
。你的模型中有吗?你的表单是什么样子的?我没有使用HTML表单。不使用cakephp视图。我打算将Cakephp纯粹用作RESTAPI服务器。我正在使用python直接发送HTTP Post。这就是为什么我需要知道HTTP Post中要发送的数据格式。我认为,应该使用saveAssociated()而不是saveAll()。检查其官方网站上的数据结构。@Vikash Pathak:我尝试了saveAssociated(),但仍然不起作用。例如,TableB属于TableA,我认为在这种情况下,您无法从TableA保存,您是否尝试从TableB保存?您必须向tableA添加关系,其中
tableA有许多TableB
。你的模型中有这个吗?它可能有用,但不如别人给出的答案那么简洁。但还是非常感谢。这可能有用,但不如其他人给出的答案那么简洁。但还是非常感谢。这可能有用,但不如其他人给出的答案那么简洁。但还是非常感谢。这可能有用,但不如其他人给出的答案那么简洁。但还是非常感谢。