複合一意インデックスの検証ルール(非プライマリ)
-
27-09-2019 - |
質問
テーブルに複合一意キーを持ち、それらを検証したいのは私が最初ではないと確信しています。私は自転車を発明したくないので、最初にここで尋ねます。主キーとして「id」列を持ち、一意の複合キーとして他の2つの列を持つテーブルがいくつかあります。送信されたエントリが一意であることを確認し、一意でない場合は検証エラーを表示する検証ルールがあると便利です。Cakephpでは、カスタム検証ルールで実行できます。誰かがすでにそのようなメソッドを作成していると確信しています。
理想的には、さまざまなモデルで使用できるapp_model.phpのメソッドになります。
解決
私はその機能を使用しています: ジェネラコディセタグプレ
基本的に使用法は次のとおりです: ジェネラコディセタグプレ
基本的に、これにより、各フィールドの下に、一意ではないという警告が表示されます。
私はこれを頻繁に使用しており、正常に機能しています。
他のヒント
過去数年間にリリースされたCakePHP / 2.xバージョンでは、 isUnique
ルールはオプションで複数の列を受け入れます:
複数のフィールドを提供することで、フィールドのセットが一意であることを検証できます フィールドを作成し、
$or
をfalse
に設定します: ジェネラコディセタグプレこの機能が利用可能になった正確なバージョンはわかりませんが、
バグがあります 2.3および2.4ブランチに対して提出された2014年10月までにコアで修正されました。
アプリモデルに配置することもできますが、私の提案は、$validate
プロパティを使用してルールを配置することにより、モデルに直接追加することです。
組み込みの