Поле проверки, использующее другое значение поля в редакторе. - PullRequest
2 голосов
/ 09 июля 2019

У меня есть база данных ниже:

Editor::inst( $db, 'servidores' )
->fields(
    Field::inst('id'),
    Field::inst('user_id')
    ->validator(Validate::required(ValidateOptions::inst()
        ->message('Required field!')
    ))
    ->validator(function($val, $data){
        $result = mysqli_query($con, "select * from table where data= ????? and user_id= '" . $val . "'");
    if (mysqli_num_rows($result) > 0){
        return false;
    }else{
        return true;
    }),
    Field::inst('date')
    ->validator(Validate::required(ValidateOptions::inst()
        ->message('Required field!')
    ))
)
->process( $_POST )
->json();

Мне нужно заблокировать вставку, если в базе данных существует user_id и date, например:

user_id | data
      1 |    1
      2 |    1
      2 |    2
      2 |    1 //wrong

Я пытаюсьпроверить как:

->validator(function($val, $data){
    $result = mysqli_query($con, "select * from table where data= ????? and user_id= '" . $val . "'");
if (mysqli_num_rows($result) > 0){
    return false;
}else{
    return true;
}),

, но я не могу получить значение data для использования в моем выборе.

Ответы [ 2 ]

2 голосов
/ 09 июля 2019

Попробуйте следующий модифицированный запрос

  $result = mysqli_query($con, "select * from table where data= '&data' and user_id= '" . $val . "'");
1 голос
/ 09 июля 2019

Решение:

->validator( function ($editor, $action, $data) {
    if ( $action == Editor::ACTION_EDIT || $action == Editor::ACTION_CREATE) {
        foreach ($data['data'] as $key => $values) {
            $pkey = $editor->pkeyToArray( $key );
                $any = $editor->db()->any( 'servidores', function ($q) use ($pkey, $values) {
                    $q->where( 'cidadao_id', $values['servidores']['user_id']);
                    $q->where( 'data', $values['servidores']['data'] );
                });

                if ( $any ) {
                    return 'False';
                }
            }
        }
    }
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...