if(!$workflow_entity = $em->getRepository('AlbatrossAceBundle:Workflow')->findByIdAndStatus($line[$titleArr['WorkflowStepID']],$line[$titleArr['WorkflowStatus']])){
$workflow_entity = new Workflow();
$workflow_entity->setWorkflowStatus($line[$titleArr['WorkflowStatus']]);
$workflow_entity->setWorkflowStepID($line[$titleArr['WorkflowStepID']]);
$em->persist($workflow_entity);
}
Saya hanya menyemak sama ada data yang sama sudah ada dalam pangkalan data semasa,
Tetapi sudah ada beberapa keping data yang sama dalam data yang disisipkan.
Jadi semasa operasi sisipan, maklumat ini diberikan
Pengecualian berlaku semasa melaksanakan 'INSERT INTO workflow (workflow_step_id, workflow_status) VALUES (?, ?)' dengan params ["10", "Assigned"]:
SQLSTATE[23000]: Pelanggaran kekangan integriti: 1062 Entri pendua '10-Ditugaskan' untuk kunci 'stepid_status_uniq'
uniqueConstraints:
stepid_status_uniq:
columns: [ workflow_step_id, workflow_status ]
Saya telah mencipta kekangan unik dalam pangkalan data (saya tidak tahu sama ada ini perkara yang betul untuk dikatakan)
Tetapi data yang sedang dimasukkan kini mempunyai data yang sama sebelum kilat
Bagaimanakah saya tahu bahawa data semasa telah melanggar peraturan unik sebelum menyimpannya ke pangkalan data?
Anda boleh bertanya sekali sebelum memasukkan mengikut peraturan kekangan anda Contohnya, mengikut contoh anda, tanya dahulu
Jika hasilnya bukan 0, bermakna teruskan memasukkan akan melanggar peraturan unik.
Sudah tentu, ini sebenarnya tidak disyorkan. Ia sangat intensif sumber untuk menyemak setiap kali anda memasukkannya
Anda boleh pertimbangkan untuk menggunakan
Kemudian periksa barisan yang terjejas selepas memasukkan Jika ia mengembalikan 0, ini bermakna pemasukan data gagal Pada masa ini, semak sama ada peraturan kekangan dilanggar.
Anda harus menggunakan Pengesahan,
http://symfony.com/doc/master/reference/constraints/UniqueEntity.html