1

私のデータベースには割引テーブルがあり、ユーザーは特定の「範囲」、「カテゴリ」、「サプライヤー」、および製品タイプに対して割引を行います。Cakephp で複数の「割引」を許可しないようにするにはどうすればよいですか?

例えば割引は

user_id 100
category_id 1 
range_id 2 
producttype "doors"
discount 10%

そのサプライヤー、範囲、カテゴリー、および製品タイプに対して別の割引を作成できないようにするにはどうすればよいですか?

私の割引モデルにはリレーションシップが 1 つしかありません (それが違いを生むかどうかはわかりません)

<?php
App::uses('AppModel', 'Model');
/**
 * Discount Model
 *
 * @property User $User
 */
class Discount extends AppModel {
/**
 * Validation rules
 *
 * @var array
 */
 //public $displayField = 'discount';

    public $validate = array(
        /*'title' => array(
            'notempty' => array(
                'rule' => array('notempty'),
                //'message' => 'Your custom message here',
                //'allowEmpty' => false,
                //'required' => false,
                //'last' => false, // Stop validation after this rule
                //'on' => 'create', // Limit validation to 'create' or 'update' operations
            ),
        ),*/
        'user_id' => array(
            'numeric' => array(
                'rule' => array('numeric'),
                //'message' => 'Your custom message here',
                //'allowEmpty' => false,
                //'required' => false,
                //'last' => false, // Stop validation after this rule
                //'on' => 'create', // Limit validation to 'create' or 'update' operations
            ),
        ),
        'discount' => array(
            'numeric' => array(
                'rule' => array('numeric'),
                //'message' => 'Your custom message here',
                //'allowEmpty' => false,
                //'required' => false,
                //'last' => false, // Stop validation after this rule
                //'on' => 'create', // Limit validation to 'create' or 'update' operations
            ),
        ),
    );

    //The Associations below have been created with all possible keys, those that are not needed can be removed

/**
 * belongsTo associations
 *
 * @var array
 */
    public $belongsTo = array(
        'User' => array(
            'className' => 'User',
            'foreignKey' => 'user_id',
            'conditions' => '',
            'fields' => '',
            'order' => ''
        )
    );


}
4

1 に答える 1

1

cakephp複数のフィールドを持つ一意の処理は非常に簡単です

モデルでは、次のような割引検証ルールについて:

public $validate = array(
        'discount' => array(
            'numeric' => array(
                'rule' => array('numeric'),

            ),
            'isUnique' => array(
                'rule' => array('isUnique',array('user_id','category_id','range_id','producttype'),false),
                'message' => 'discount already Exist.'
            )
        ),
    );
于 2016-03-31T09:36:36.957 に答える