|
@@ -115,15 +115,16 @@ class Query {
|
|
|
/**
|
|
|
* Add columns to the SELECT clause.
|
|
|
*
|
|
|
+ * @param array $columns
|
|
|
* @return Query
|
|
|
*/
|
|
|
- public function select()
|
|
|
+ public function select($columns = array('*'))
|
|
|
{
|
|
|
$this->select = ($this->distinct) ? 'SELECT DISTINCT ' : 'SELECT ';
|
|
|
|
|
|
- $columns = array();
|
|
|
+ $wrapped = array();
|
|
|
|
|
|
- foreach (func_get_args() as $column)
|
|
|
+ foreach ($columns as $column)
|
|
|
{
|
|
|
// If the column name is being aliased, we will need to wrap the column
|
|
|
// name and its alias in keyword identifiers.
|
|
@@ -131,15 +132,15 @@ class Query {
|
|
|
{
|
|
|
$segments = explode(' ', $column);
|
|
|
|
|
|
- $columns[] = $this->wrap($segments[0]).' AS '.$this->wrap($segments[2]);
|
|
|
+ $wrapped[] = $this->wrap($segments[0]).' AS '.$this->wrap($segments[2]);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- $columns[] = $this->wrap($column);
|
|
|
+ $wrapped[] = $this->wrap($column);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- $this->select .= implode(', ', $columns);
|
|
|
+ $this->select .= implode(', ', $wrapped);
|
|
|
|
|
|
return $this;
|
|
|
}
|
|
@@ -388,34 +389,38 @@ class Query {
|
|
|
/**
|
|
|
* Find a record by the primary key.
|
|
|
*
|
|
|
- * @param int $id
|
|
|
+ * @param int $id
|
|
|
+ * @param array $columns
|
|
|
* @return object
|
|
|
*/
|
|
|
- public function find($id)
|
|
|
+ public function find($id, $columns = array('*'))
|
|
|
{
|
|
|
- return $this->where('id', '=', $id)->first();
|
|
|
+ return $this->where('id', '=', $id)->first($columns);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Execute the query as a SELECT statement and return the first result.
|
|
|
*
|
|
|
+ * @param array $columns
|
|
|
* @return object
|
|
|
*/
|
|
|
- public function first()
|
|
|
+ public function first($columns = array('*'))
|
|
|
{
|
|
|
- return (count($results = call_user_func_array(array($this->take(1), 'get'), func_get_args())) > 0) ? $results[0] : null;
|
|
|
+
|
|
|
+ return (count($results = $this->take(1)->get($columns)) > 0) ? $results[0] : null;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* Execute the query as a SELECT statement.
|
|
|
*
|
|
|
+ * @param array $columns
|
|
|
* @return array
|
|
|
*/
|
|
|
- public function get()
|
|
|
+ public function get($columns = array('*'))
|
|
|
{
|
|
|
if (is_null($this->select))
|
|
|
{
|
|
|
- call_user_func_array(array($this, 'select'), (count(func_get_args()) > 0) ? func_get_args() : array('*'));
|
|
|
+ $this->select($columns);
|
|
|
}
|
|
|
|
|
|
return DB::query(Query\Compiler::select($this), $this->bindings, $this->connection);
|