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

fields() public method

Usage: to add a field $query->fields('created'); to add several fields $query->fields(array('title','body','modified')); to reset fields to none $query->fields(false); should be followed by a 2nd call to fields with required fields
public fields ( mixed $fields = null, boolean $overwrite = false ) : array
$fields mixed string, array or `false`
$overwrite boolean If `true`, existing fields will be removed before adding `$fields`.
return array Returns an array containing all fields added to the query.
    public function fields($fields = null, $overwrite = false)
    {
        if ($fields === false || $overwrite) {
            $this->_fields = array(0 => array(), 1 => array());
        }
        if ($fields === null) {
            return array_merge(array_keys($this->_fields[1]), $this->_fields[0]);
        }
        if (!$fields) {
            return $this;
        }
        foreach ((array) $fields as $key => $field) {
            if (is_string($field)) {
                $this->_fields[1][$field] = true;
            } elseif (is_array($field) && !is_numeric($key)) {
                foreach ($field as &$value) {
                    $value = "{$key}.{$value}";
                }
                $this->fields($field);
            } else {
                $this->_fields[0][] = $field;
            }
        }
        return $this;
    }

Usage Example

Example #1
0
	public function testFields() {
		$query = new Query($this->_queryArr);

		$expected = array('id','author_id','title');
		$result = $query->fields();
		$this->assertEqual($expected, $result);

		$query->fields('content');

		$expected = array('id','author_id','title','content');
		$result = $query->fields();
		$this->assertEqual($expected, $result);

		$query->fields(array('updated','created'));

		$expected = array('id','author_id','title','content','updated','created');
		$result = $query->fields();
		$this->assertEqual($expected, $result);

		$query->fields(false);
		$query->fields(array('id', 'title'));

		$expected = array('id','title');
		$result = $query->fields();
		$this->assertEqual($expected, $result);
	}
All Usage Examples Of lithium\data\model\Query::fields