使用Zend Framework 1和Doctrine 1.2.4构建的帮助/支持应用程序。
问题:在创建新支持服务单时,一开始没有分配staff_id
(支持人员),Doctrine会在staff
表中插入空行,因为staff_id
为NULL,并且没有匹配的{{可以在id
表中找到{}} NULL
值的}}。
创建新故障单,记下staff
staff_id
INSERT INTO tickets (closable, emergency, survey_sent, brands_id, departments_id, categories_id, status_id, staff_id, subject, contacts_id, mask, initial_categories_id, last_opened, last_activity, created_at, updated_at) VALUES ('0', '1', '0', '1', '4', '6', '1', NULL, 'Cancellation Request', '5463', 'MQXB-39568', '6', '2012-06-14 03:15:49', '2012-06-14 03:15:49', '2012-06-14 03:15:49', '2012-06-14 03:15:49')
表中的新行有一些默认值,这是问题。
staff
出现狂野查询
INSERT INTO staff (enable_dst, last_page, external_links, replies_per_page, active) VALUES ('1', '0', '0', '10', '1')
现在使用新插入的票证ID更新DELETE FROM staff_index WHERE (id = '197')
(post =员工备注)表,ticket_posts
表中新插入的空行(staff
此处应为NULL)
staff_id
我通过将第二列(用户名)设置为非空来“解决”空行,但不是真正的解决方案。
有没有办法告诉Doctrine,这里没什么可做的,继续前进?
(^底线)
答案 0 :(得分:0)
在保留对象之前,您是否在Ticket实例上访问了Staff属性?这可能是Doctrine创造一个“空”记录的问题。
$ticket = new Ticket();
$ticket->Staff = NULL; # Doctrine will now add empty record.
$ticket->save();
答案 1 :(得分:0)
public function preSave()
{
if (empty($this->staff_id))
$this->clearRelated('Staff');
}