2012-06-13 5 views
1

Приложение справки/поддержки, созданное с помощью Zend Framework 1 и Doctrine 1.2.4.Doctrine - предотвратить новый INSERT в связанных таблицах

Проблема: при создании нового билета поддержки без назначения staff_id (вспомогательного персонала) в первом, Doctrine вставляет пустую строку в таблице staff, потому что staff_id является NULL, а не соответствие значения id с NULL может быть найдено в staff таблицы.

Новый билет будет создан, значение NULL примечания для 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') 

дикий запрос появляется

DELETE FROM staff_index WHERE (id = '197') 

и теперь ticket_posts таблицы (пост = персонал примечания) обновляются с вновь вставленным билетом ID, и вновь вставить пустую строку в staff таблице (staff_id должен быть NULL здесь)

UPDATE ticket_posts SET tickets_id = '12455', staff_id = '197', updated_at = '2012-06-14 03:15:49' WHERE id = '48113' 

Я «решена» пустые строки, установив второй столбец (имя пользователя) не нулевой, но не реальное решение.


Есть ли способ рассказать Доктрине, здесь нечего делать, двигаться дальше?


(^ нижняя строка)

+0

Покажите нам код вашей вставки – j0k

+0

@ j0k в основном '$ new_ticket = новые билеты(); $ new_ticket-> fromArray ($ formData); '... –

ответ

0

Вы получили доступ к собственности сотрудников на экземпляре Билета, прежде чем сохранение объекта? Это может быть проблемой, которую Doctrine создает «пустую» запись.

$ticket = new Ticket(); 
$ticket->Staff = NULL; # Doctrine will now add empty record. 
$ticket->save(); 
+0

Привет, нет, он заполнен из массива POST ... $ new_ticket = new Tickets(); $ new_ticket-> fromArray ($ formData); ', если никто не назначен, staff_id пуст '' ... спасибо. –

+0

Есть ли у вашей формы отношение «Персонал» где-то? Это может быть проблемой, если, например, для. ни один не выбран из