我有兩個表: -CakePHP的3.x的數據插入到兩個表
銷售
CREATE TABLE `sales` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`title` varchar(255) DEFAULT NULL,
`description` text,
`quantity` int(10) DEFAULT NULL,
`price` decimal(18,2) DEFAULT NULL,
`payment_method_id` int(10) DEFAULT NULL,
`user_id` int(10) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
sale_details
CREATE TABLE `sale_details` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`sale_id` int(10) DEFAULT NULL,
`product_id` int(10) DEFAULT NULL,
`quantity` int(10) DEFAULT NULL,
`price` decimal(18,2) DEFAULT NULL,
`total_price` decimal(18,2) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
我需要將數據插入到這些表相應地使用ajax。首先,我將我的數組數據組織到以下內容中。
這裏是我的數據,
[
'quantity' => 3,
'price' => 63,
'payment_method_id' => 1,
'user_id' => 1,
'sale_details' => [
0 => [
'product_id' => 1,
'quantity' => 2,
'price' => 24,
'total_price' => 48
],
1 => [
'product_id' => 49,
'quantity' => 1,
'price' => 15,
'total_price' => 15
]
]
]
SalesController.php
if ($this->request->is('ajax')) {
$sales = $this->Sales->newEntity(
$this->request->data(),
[
'validate' => 'create',
'associated' => [
'SaleDetails' => ['validate' => 'create']
]
]
);
if ($this->Sales->save($sales)) {
//code
}
}
我設法將數據插入到這些表,但兩個表的主鍵保持與另外數增加2.我插入數據3次。
下面是如何記錄的數據: -
銷售
id title description quantity price payment_method_id user_id created modified
------ ------ ----------- -------- ------ ----------------- ------- ------------------- ---------------------
1 (NULL) (NULL) 3 63.00 1 1 2017-03-03 11:37:11 2017-03-03 11:37:11
sale_details
id sale_id product_id quantity price total_price created modified
------ ------- ---------- -------- ------ ----------- ------------------- ---------------------
1 1 1 2 24.00 48.00 2017-03-03 11:37:11 2017-03-03 11:37:11
2 1 49 1 15.00 15.00 2017-03-03 11:37:11 2017-03-03 11:37:11
你可以從表中注意到,
銷售表ID與增加加2和它碰巧
sale_details表。
我的問題如下: -
1)我有點新的CakePHP 3,所以這是將數據保存到多個表中正確的方法?我刪除了以下幾行,我仍然可以將數據保存到這些表中。如何處理'關聯'在這裏?
SalesController.php
if ($this->request->is('ajax')) {
$sales = $this->Sales->newEntity(
$this->request->data(),
[
'validate' => 'create',
/*'associated' => [
'SaleDetails' => ['validate' => 'create']
]*/ // removed
]
);
if ($this->Sales->save($sales)) {
//code
}
}
2)我不明白,爲什麼那些ID與添加2.增加我敢肯定,我已經設置AUTO_INCREMENT = 1針對表。
系統變量auto_increment_increment
已被設置爲2.不知道這怎麼可能發生。
在此先感謝。