tôi có các nguyên tắc sau trong BlockedTable.php tôiCakePHP 3 Nhiều isUnique cho phép NULL trùng lặp
public function buildRules(RulesChecker $rules)
{
$rules->add($rules->isUnique(['date', 'time']),
['message' => 'unique error']);
return $rules;
}
Cho đến bây giờ điều này đã làm việc tốt - nếu tôi cố gắng tiết kiệm một kỷ lục mới với ngày và thời gian đã tồn tại , nó ngăn cản tôi tiết kiệm.
Tuy nhiên, nếu thời gian của tôi là NULL
, chẳng hạn như mục nhập bên dưới;
╔════╦══════════════╦═══════╗
║ ID ║ Date ║ Time ║
╠════╬══════════════╬═══════╣
║ 1 ║ 22/08/1985 ║ NULL ║
╚════╩══════════════╩═══════╝
Quy tắc vẫn cho phép tôi lưu mục nhập mới có cùng dữ liệu. Vì vậy, nếu tôi cố gắng tiết kiệm $date = 22/08/1985
và $time = NULL
nó tiết kiệm tốt và có một bản ghi trùng lặp trong cơ sở dữ liệu của tôi. Tôi mong đợi nó đã thất bại do quy tắc trên?
Tại sao điều này lại xảy ra? Và làm cách nào tôi có thể ngăn các mục nhập trùng lặp trên các giá trị NULL
?
Cảm ơn trước sự giúp đỡ của bạn.
Cảm ơn cho câu trả lời ndm sâu, tôi sẽ cân nhắc lựa chọn của tôi và trong khi chờ đợi tạo ra một vé tăng cường . – JayIsTooCommon
Và đã làm quy tắc tùy chỉnh và hoạt động hoàn hảo. Cảm ơn một lần nữa – JayIsTooCommon