docs icon indicating copy to clipboard operation
docs copied to clipboard

rex_form - auf unique validieren

Open alxndr-w opened this issue 6 years ago • 2 comments

Aus Slack via @gharlan. Kannst du die Notation für rex_sql_table noch liefern?

Beispiel (rex_form):

 $form->addErrorMessage(REX_FORM_ERROR_VIOLATE_UNIQUE_KEY, rex_i18n::msg('media_manager_error_type_name_not_unique'));

Voraussetzung: unique key (SQL):

ALTER TABLE `rex_dsgvo_client` ADD UNIQUE `unique_index`(`domain`, `lang`, `keyword`);

alxndr-w avatar Jun 20 '18 08:06 alxndr-w

Als ALTER-Query:

rex_sql_table::get(rex::table('my_table'))
    ->addIndex(new rex_sql_index('unique_key_name', ['domain', 'lang', 'keyword'], rex_sql_index::UNIQUE))
    ->alter();

Wobei ich es in der Regel stattdessen in den Gesamt-ensure-Ausdruck einbetten würde:

rex_sql_table::get(rex::table('my_table'))
    ->ensureColumn(...)
    ->ensureColumn(...)
    ...
    ->ensureIndex(new rex_sql_index('unique_key_name', ['domain', 'lang', 'keyword'], rex_sql_index::UNIQUE))
    ->ensure();

gharlan avatar Jun 20 '18 08:06 gharlan

Wichtig ist auch noch, dass die Felder dann varchar() sein müssen und nicht text.

alxndr-w avatar Jun 20 '18 08:06 alxndr-w