Пример #1
0
 /**
  * Check unique current map
  * @return bool
  */
 protected function validationUnique($primaryKey)
 {
     $value = $this->getValue();
     $field = $this->cursor;
     $map = clone $this->map;
     $options = ['limit' => 1];
     if ($map instanceof SQLMapperOri) {
         $filter = ["{$field} = ?", $value];
     } elseif ($map instanceof JigMapperOri) {
         $filter = [$field => $value];
     } elseif ($map instanceof MongoMapperOri) {
         $filter = ["@{$field} = ?", $value];
     } else {
         user_error('Invalid mapper instance');
     }
     $map->load($filter, $options);
     $result = $map->dry();
     if (!$result && $this->map->valid()) {
         $pa = [];
         $pb = [];
         $primaryKey = is_array($primaryKey) ? $primaryKey : [$primaryKey];
         foreach ($primaryKey as $key) {
             $pa[$key] = $this->map->getPrevious($key);
             $pb[$key] = $map->get($key);
         }
         $result = $pa === $pb;
     }
     return (bool) $result;
 }