original_string: protected function _appendNotMatching($query, $options)
      {
          $target = $this->_targetTable;
          if (!empty($options['negateMatch'])) {
              $primaryKey = $query->aliasFields((array)$target->getPrimaryKey(), $this->_name);
              $query->andWhere(function ($exp) use ($primaryKey) {
                  array_map([$exp, 'isNull'], $primaryKey);
  
                  return $exp;
              });
          }
      }
code: protected function _appendNotMatching($query, $options)
      {
          $target = $this->_targetTable;
          if (!empty($options['negateMatch'])) {
              $primaryKey = $query->aliasFields((array)$target->getPrimaryKey(), $this->_name);
              $query->andWhere(function ($exp) use ($primaryKey) {
                  array_map([$exp, 'isNull'], $primaryKey);
  
                  return $exp;
              });
          }
      }
code_tokens: protected function _appendNotMatching ( $ query , $ options ) { $ target = $ this -> _targetTable ; if ( ! empty ( $ options [ 'negateMatch' ] ) ) { $ primaryKey = $ query -> aliasFields ( ( array ) $ target -> getPrimaryKey ( ) , $ this -> _name ) ; $ query -> andWhere ( function ( $ exp ) use ( $ primaryKey ) { array_map ( [ $ exp , 'isNull' ] , $ primaryKey ) ; return $ exp ; } ) ; } }
docstring: Conditionally adds a condition to the passed Query that will make it find
  records where there is no match with this association.
  
  @param \Cake\Datasource\QueryInterface $query The query to modify
  @param array $options Options array containing the `negateMatch` key.
  @return void
docstring_tokens: Conditionally adds a condition to the passed Query that will make it find records where there is no match with this association .