我的问题是如下。
从表中删除多行后,插入新记录到错误同桌的结果。
Database Error
Error: SQLSTATE[42P01]:
Undefined table: 7 ERROR: relation "order_details_id_seq" does not exist
表
CREATE TABLE schema.order_details (
id serial NOT NULL,
order_id integer NOT NULL,
field_1 integer,
field_2 real,
field_3 character varying(15),
CONSTRAINT order_details_pkey PRIMARY KEY (id )
)
WITH (
OIDS=FALSE
);
插入是
INSERT INTO "schema"."order_details" ("order_id", "field_1", "field_2", "field_3")
VALUES (37, 1, 2, 'value');
序列“模式”。“order_details_id_seq”中使用的模式存在。
CREATE SEQUENCE schema.order_details_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 37
CACHE 1;
楷模。
// Model
class Order extends AppModel {
public $useDbConfig = 'other_data';
public $hasMany = array(
'OrderDetail' => array(
'className' => 'OrderDetail',
'foreignKey' => 'order_id',
'dependent' => true,
'order' => array(
'OrderDetail.order_id',
'OrderDetail.field_1'
))
);
class OrderDetail extends AppModel {
public $useDbConfig = 'other_data';
public $belongsTo = array(
'Order' => array(
'className' => 'Order',
'foreignKey' => 'order_id',
'dependent' => true
),
// model Order save code on recreation of order
$this->OrderDetail->deleteAll(array('OrderDetail.order_id' => $this->id));
此时试图插入$this->OrderDetail->query('VACUUM FULL ANALYZE order_details');
有没有效果
foreach ($details as $d) {
$this->OrderDetail->create();
$this->OrderDetail->save($d /*array(
'order_id' => $this->id,
'field_1' => 1,
'field_2' => 2,
'field_3' => 'value'
)*/);
}
我得到的第一个foreach循环错误。 最奇怪的是,问题似乎还有一些时间随机后消失。
什么可能是,如何任何建议,以摆脱它?
目前使用的代码解决的问题。
$this->Order->id = $id;
$this->Order->delete();
它在以下情况下触发2个查询每行(100额外的在我的情况!)DELETE语句,而不是两个
$this->OrderDetail->deleteAll(array('OrderDetail.order_id' => $id));
所以这个时候它有改进的余地。
编辑:目前的代码工作,因为它应该与扭捏DboSource
。