lithium\data\model\Query::export PHP Method

export() public method

Convert the query's properties to the data sources' syntax and return it as an array.
public export ( Source $source, array $options = [] ) : array
$source lithium\data\Source Instance of the data source to use for conversion.
$options array Options to use when exporting the data.
return array Returns an array containing a data source-specific representation of a query.
    public function export(Source $source, array $options = array())
    {
        $defaults = array('keys' => array());
        $options += $defaults;
        if ($options['keys']) {
            $keys = array_flip($options['keys']);
        } else {
            $keys =& $this->_config;
        }
        list($copy, $apply) = Set::slice($keys, $source->methods());
        if (isset($keys['with'])) {
            $this->applyStrategy($source);
        }
        foreach ($apply as $item => $value) {
            $results[$item] = $source->{$item}($this->{$item}(), $this);
        }
        foreach ($copy as $item => $value) {
            $results[$item] = $this->_config[$item];
        }
        if (array_key_exists('data', $keys)) {
            $results['data'] = $this->_exportData();
        }
        if (array_key_exists('source', $keys)) {
            $results['source'] = $source->name($results['source']);
        }
        if (!isset($results['fields'])) {
            return $results;
        }
        $created = array('fields', 'values');
        if (is_array($results['fields']) && array_keys($results['fields']) == $created) {
            $results = $results['fields'] + $results;
        }
        return $results;
    }

Usage Example

Example #1
0
 public function testExport()
 {
     $query = new Query($this->_queryArr);
     $ds = new MockDatabase();
     $export = $query->export($ds);
     $this->assertTrue(is_array($export));
     $this->skipIf(!is_array($export), 'Query::export() does not return an array');
     $expected = array('calculate', 'comment', 'conditions', 'data', 'fields', 'group', 'joins', 'limit', 'map', 'model', 'name', 'offset', 'order', 'page', 'source', 'whitelist');
     $result = array_keys($export);
     sort($expected);
     sort($result);
     $this->assertEqual($expected, $result);
     $expected = 'id, author_id, title';
     $result = $export['fields'];
     $this->assertEqual($expected, $result);
     $expected = MockQueryPost::meta('source');
     $result = $export['source'];
     $this->assertEqual($expected, $result);
 }
All Usage Examples Of lithium\data\model\Query::export