Skip to content
Snippets Groups Projects
SelectQueryBuilder.php 1.35 KiB
Newer Older
  • Learn to ignore specific revisions
  • Josh Pollock's avatar
    Josh Pollock committed
    <?php
    
    
    namespace calderawp\CalderaFormsQuery\Select;
    
    Josh Pollock's avatar
    Josh Pollock committed
    
    
    Josh Pollock's avatar
    Josh Pollock committed
    use calderawp\CalderaFormsQuery\CreatesSqlQueries;
    
    Josh Pollock's avatar
    Josh Pollock committed
    use calderawp\CalderaFormsQuery\MySqlBuilder;
    
    Josh Pollock's avatar
    Josh Pollock committed
    use calderawp\CalderaFormsQuery\QueryBuilder;
    use NilPortugues\Sql\QueryBuilder\Manipulation\AbstractBaseQuery;
    use NilPortugues\Sql\QueryBuilder\Manipulation\Delete;
    
    Josh Pollock's avatar
    Josh Pollock committed
    use NilPortugues\Sql\QueryBuilder\Manipulation\Select;
    
    
    Josh Pollock's avatar
    Josh Pollock committed
    abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuery
    
    Josh Pollock's avatar
    Josh Pollock committed
    {
    
    	/**
    	 * @var Select
    	 */
    
    Josh Pollock's avatar
    Josh Pollock committed
    	private $selectQuery;
    
    Josh Pollock's avatar
    Josh Pollock committed
    
    	/** @inheritdoc */
    
    Josh Pollock's avatar
    Josh Pollock committed
    	public function getSelectQuery()
    	{
    
    Josh Pollock's avatar
    Josh Pollock committed
    
    
    Josh Pollock's avatar
    Josh Pollock committed
    		if (empty($this->selectQuery)) {
    
    			$this->setNewQuery();
    
    Josh Pollock's avatar
    Josh Pollock committed
    		}
    
    Josh Pollock's avatar
    Josh Pollock committed
    		return $this->selectQuery;
    
    Josh Pollock's avatar
    Josh Pollock committed
    	}
    
    
    Josh Pollock's avatar
    Josh Pollock committed
    	/**
    	 * @return Select
    	 */
    	protected function getCurrentQuery()
    
    Josh Pollock's avatar
    Josh Pollock committed
    	{
    
    Josh Pollock's avatar
    Josh Pollock committed
    		return $this->getSelectQuery();
    
    Josh Pollock's avatar
    Josh Pollock committed
    	}
    
    	/**
    	 * @param string $column Column to orderby.
    	 * @param bool $ascending Optional. To use ascending order? If false, descending is used. True is the default.
    	 * @return $this
    	 */
    
    Josh Pollock's avatar
    Josh Pollock committed
    	public function addOrderBy($column, $ascending = true)
    	{
    
    Josh Pollock's avatar
    Josh Pollock committed
    		$order = $ascending ? self::ASC : self::DESC;
    
    Josh Pollock's avatar
    Josh Pollock committed
    		$this->getCurrentQuery()->orderBy($column, $order);
    
    Josh Pollock's avatar
    Josh Pollock committed
    		return $this;
    	}
    
    	/** @inheritdoc */
    	public function resetQuery()
    	{
    		$this->setNewQuery();
    		return $this;
    	}
    
    	private function setNewQuery()
    	{
    		$this->selectQuery = new \NilPortugues\Sql\QueryBuilder\Manipulation\Select($this->getTableName());
    	}
    
    Josh Pollock's avatar
    Josh Pollock committed
    }