Php 保存模型和相关模型数据的HTTPPOST应该是什么样子?
我使用的是CakePHP2.4.5。我有两个具有一对多关系的表。表B属于表A 我希望表a中有一个控制器,可以保存表a和表B中的记录。控制器代码应该很简单,如下所示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();
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
。你的模型中有这个吗?它可能有用,但不如别人给出的答案那么简洁。但还是非常感谢。这可能有用,但不如其他人给出的答案那么简洁。但还是非常感谢。这可能有用,但不如其他人给出的答案那么简洁。但还是非常感谢。这可能有用,但不如其他人给出的答案那么简洁。但还是非常感谢。