public function getSelector($pkey, array $record)
    {
        if ($pkey !== null && !is_array($pkey))
            throw new InvalidTypeException("Invalid primary key: " . WF::str($pkey));

        // When no primary key is available, we match on all fields
        $is_primary_key = true;
        if ($pkey === null)
        {
            $pkey = array();
            foreach ($record as $k => $v)
                $pkey[$k] = $this->table->getColumn($v);
            $is_primary_key = false;
        }

        // Make sure there are fields to match on
        if (empty($pkey))
            throw new InvalidTypeException("No fields to match on");

        $condition = null;
        foreach ($pkey as $pkey_column => $coldef)
        {
            if ($is_primary_key && (!array_key_exists($pkey_column, $record) || $record[$pkey_column] === null))
                throw new DAOException("Record does not have value for primary key column {$pkey_column}");
            
            $pkey_value = $coldef->beforeInsertFilter($record[$pkey_column]);
            $comparator = new Query\ComparisonOperator("=", $pkey_column, $pkey_value);
            $condition = $condition === null ? $comparator : new Query\BooleanOperator("AND", $condition, $comparator);
        }

        return $condition;
    }
public function getSelector($pkey, array $record)
    {
        if ($pkey !== null && !is_array($pkey))
            throw new InvalidTypeException("Invalid primary key: " . WF::str($pkey));

        // When no primary key is available, we match on all fields
        $is_primary_key = true;
        if ($pkey === null)
        {
            $pkey = array();
            foreach ($record as $k => $v)
                $pkey[$k] = $this->table->getColumn($v);
            $is_primary_key = false;
        }

        // Make sure there are fields to match on
        if (empty($pkey))
            throw new InvalidTypeException("No fields to match on");

        $condition = null;
        foreach ($pkey as $pkey_column => $coldef)
        {
            if ($is_primary_key && (!array_key_exists($pkey_column, $record) || $record[$pkey_column] === null))
                throw new DAOException("Record does not have value for primary key column {$pkey_column}");
            
            $pkey_value = $coldef->beforeInsertFilter($record[$pkey_column]);
            $comparator = new Query\ComparisonOperator("=", $pkey_column, $pkey_value);
            $condition = $condition === null ? $comparator : new Query\BooleanOperator("AND", $condition, $comparator);
        }

        return $condition;
    }
public function getSelector ( $ pkey , array $ record ) { if ( $ pkey !== null && ! is_array ( $ pkey ) ) throw new InvalidTypeException ( "Invalid primary key: " . WF :: str ( $ pkey ) ) ; // When no primary key is available, we match on all fields $ is_primary_key = true ; if ( $ pkey === null ) { $ pkey = array ( ) ; foreach ( $ record as $ k => $ v ) $ pkey [ $ k ] = $ this -> table -> getColumn ( $ v ) ; $ is_primary_key = false ; } // Make sure there are fields to match on if ( empty ( $ pkey ) ) throw new InvalidTypeException ( "No fields to match on" ) ; $ condition = null ; foreach ( $ pkey as $ pkey_column => $ coldef ) { if ( $ is_primary_key && ( ! array_key_exists ( $ pkey_column , $ record ) || $ record [ $ pkey_column ] === null ) ) throw new DAOException ( "Record does not have value for primary key column {$pkey_column}" ) ; $ pkey_value = $ coldef -> beforeInsertFilter ( $ record [ $ pkey_column ] ) ; $ comparator = new Query \ ComparisonOperator ( "=" , $ pkey_column , $ pkey_value ) ; $ condition = $ condition === null ? $ comparator : new Query \ BooleanOperator ( "AND" , $ condition , $ comparator ) ; } return $ condition ; }
Form a condition that matches the record using the values in the provided record.

@param array $pkey The column names in the primary key
@param array $record The record to match
Form a condition that matches the record using the values in the provided record .