Можно ли установить 2 отдельных уникальных поля с помощью Redbean ORM

Я использую ORM redbeanPHP и mysql. У меня есть следующая таблица:

CREATE TABLE `mast` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
 `note` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
 `geolocation` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
 `location` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
 `zip` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
 `state` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
 `app` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
 PRIMARY KEY (`id`),
 UNIQUE KEY `UQ_84a93b55f688c94f73092dba1b9590c41a92cbf5` ('app')
) ENGINE=InnoDB AUTO_INCREMENT=98 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

Я хочу вставить записи в таблицу «мачта», если они уникальны по отношению к обоим из двух полей, перечисленных выше. Другими словами, если «геолокация» или «приложение» являются дубликатами, я не хочу вставлять связанную запись.

Я использую следующий php-код для создания двух уникальных полей:

       $mast= R::dispense('mast');
       $mast->setMeta("buildcommand.unique" , array(array('geolocation')));

            $mast ->import($resultsarray);
            $mast->setMeta("buildcommand.unique" , array(array('app')));


            $id = R::store($mast); // DUMMY BEAN

Уникальный индекс создается только для поля «приложение». Есть ли способ установить их как уникальные в redbean?


person user1592380    schedule 30.06.2014    source источник


Ответы (1)


Из документации это должно работать следующим образом:

$mast = R::dispense('mast');
$mast->setMeta("buildcommand.unique.0", array('geolocation', 'app'));
$mast->import($resultsarray);
$id = R::store($mast);

В своем коде вы просто перезаписали значение для build command.unique.

person kekub    schedule 03.08.2014