2016-08-08 4 views
0

У меня есть поле под названием mac, где я храню адрес mac, но мне нужно, чтобы он был уникальным, чтобы избежать дублирования адреса mac.Laravel уникальное поле validate not working

код:

return [ 
      'user_id' => 'required|integer', 
      'mac' => array('required|unique:mac', 'regex:/^([0-9A-Z]{2}[-]){5}([0-9A-Z]{1,2})$/'), 
     ]; 

ошибка: Метод [validateRequired | уникальный] не существует.

структура:

CREATE TABLE `devices` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `user_id` int(10) unsigned NOT NULL, 
    `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `mac` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `content` varchar(255) COLLATE utf8_unicode_ci NOT NULL, 
    `status` tinyint(1) NOT NULL DEFAULT '0', 
    `created_at` timestamp NULL DEFAULT NULL, 
    `updated_at` timestamp NULL DEFAULT NULL, 
    `deleted_at` timestamp NULL DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `devices_mac_unique` (`mac`), 
    KEY `devices_user_id_foreign` (`user_id`), 
    CONSTRAINT `devices_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 
+0

он должен быть '«макинтош»=> '[требуется, уникальный: макинтош ...]' – linuxartisan

+0

Поле под проверки должно быть уникальным в данной таблице базы данных. –

+0

Добавьте свою структуру таблицы здесь –

ответ

1

Вы должны были бы определить таблицу МАС-адрес нужно будет сверять

return [ 
    'user_id' => 'required|integer', 
    'mac'  => 'required|unique:devices,mac|regex:/^([0-9A-Z]{2}[-]){5}([0-9A-Z]{1,2})$/', 
]; 

Update - При обновлении записи, вместо создания вам распространит ваше правило на.

return [ 
    'user_id' => 'required|integer', 
    'mac'  => 'required|unique:devices,mac,' . $device->id . '|regex:/^([0-9A-Z]{2}[-]){5}([0-9A-Z]{1,2})$/', 
]; 
+0

спасибо, не верьте, я не пробовал это раньше :) – Jah

+0

Случается для всех нас. Я обновил ответ, чтобы показать правило, если вы обновляете запись устройства. –