Правило проверки для составного (неосновного) уникального индекса

Я уверен, что не являюсь первым, у кого есть составные уникальные ключи в таблицах и кто хочет проверить их. Я не хочу изобретать велосипед, таким образом, я спрашиваю здесь сначала. У меня есть несколько таблиц, которые имеют 'идентификационные' столбцы как первичные ключи и два других столбца как уникальные составные ключи. Было бы хорошо иметь правило проверки проверить, что отправленная запись уникальна, и отобразите ошибку проверки, если это не. В Cakephp это могло быть сделано пользовательским правилом проверки. Я вполне уверен, кто-то уже создал такой метод.

Идеально это был бы метод в app_model.php, который мог использоваться различными моделями.

7
задан bancer 10 August 2010 в 01:51
поделиться

2 ответа

Я использую эту функцию:

function checkUnique($data, $fields) {
    if (!is_array($fields)) {
            $fields = array($fields);
        }
        foreach($fields as $key) {
            $tmp[$key] = $this->data[$this->name][$key];
        }
    if (isset($this->data[$this->name][$this->primaryKey]) && $this->data[$this->name][$this->primaryKey] > 0) {
            $tmp[$this->primaryKey." !="] = $this->data[$this->name][$this->primaryKey];
        }
    //return false;
        return $this->isUnique($tmp, false); 
    }

в основном используется:

'field1' => array(
                'checkUnique' => array(
                    'rule' => array('checkUnique', array('field1', 'field2')),
                    'message' => 'This field need to be non-empty and the row need to be unique'
                ),
            ),
'field2' => array(
                'checkUnique' => array(
                    'rule' => array('checkUnique', array('field1', 'field2')),
                    'message' => 'This field need to be non-empty and the row need to be unique'
                ),
            ),

Таким образом, в основном это покажет предупреждение под каждым из полей о том, что оно не уникально.

Я часто использую это, и он работает правильно.

11
ответ дан 7 December 2019 в 01:14
поделиться

Вы можете поместить его в модель приложения, но я предлагаю просто добавить его в модель, поместив правило с его свойством $ validate .

Ознакомьтесь со встроенным правилом isUnique .

-1
ответ дан 7 December 2019 в 01:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: