1

ZendFramework1およびDoctrine1.2.4で構築されたヘルプ/サポートアプリケーション。

問題:最初に(サポート担当者)を割り当てずに新しいサポートチケットを作成する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(post =スタッフノート)テーブルは新しく挿入されたチケットIDで更新され、テーブルに新しく挿入された空白行staffstaff_idここではNULLである必要があります)

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

2番目の列(ユーザー名)をnull以外に設定することで空の行を「解決」しましたが、実際の解決策ではありません。


Doctrineに伝える方法はありますか、ここでは何もしません、先に進んでください。


(^ボトムライン)

4

2 に答える 2

0

http://doctrine.readthedocs.org/en/latest/en/manual/working-with-models.html#clearing-related-records

public function preSave()
{
    if (empty($this->staff_id))
        $this->clearRelated('Staff');
}
于 2012-07-09T20:55:40.600 に答える
0

オブジェクトを永続化する前に、TicketインスタンスのStaffプロパティにアクセスしましたか?これは、Doctrineが「空の」レコードを作成しているという問題である可能性があります。

$ticket = new Ticket();
$ticket->Staff = NULL; # Doctrine will now add empty record.
$ticket->save();
于 2012-06-14T12:36:27.610 に答える