QueryDelete::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 3
rs 10
cc 1
eloc 1
nc 1
nop 2
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: Adrian Dumitru
5
 * Date: 6/27/2017
6
 * Time: 11:18 AM
7
 */
8
9
namespace Qpdb\QueryBuilder\Statements;
10
11
12
use Qpdb\PdoWrapper\PdoWrapperService;
13
use Qpdb\QueryBuilder\Dependencies\QueryException;
14
use Qpdb\QueryBuilder\Dependencies\QueryStructure;
15
use Qpdb\QueryBuilder\QueryBuild;
16
use Qpdb\QueryBuilder\Traits\DefaultPriority;
17
use Qpdb\QueryBuilder\Traits\Ignore;
18
use Qpdb\QueryBuilder\Traits\Limit;
19
use Qpdb\QueryBuilder\Traits\LowPriority;
20
use Qpdb\QueryBuilder\Traits\OrderBy;
21
use Qpdb\QueryBuilder\Traits\Replacement;
22
use Qpdb\QueryBuilder\Traits\SetFields;
23
use Qpdb\QueryBuilder\Traits\Utilities;
24
use Qpdb\QueryBuilder\Traits\Where;
25
use Qpdb\QueryBuilder\Traits\WhereAndHavingBuilder;
26
27
class QueryDelete extends QueryStatement implements QueryStatementInterface
28
{
29
30
	use Limit, Where, WhereAndHavingBuilder, Replacement, OrderBy, SetFields, Ignore, DefaultPriority, LowPriority, Utilities;
31
32
	/**
33
	 * @var string
34
	 */
35
	protected $statement = self::QUERY_STATEMENT_DELETE;
36
37
38
	/**
39
	 * QueryDelete constructor.
40
	 * @param QueryBuild $queryBuild
41
	 * @param string $table
42
	 * @throws QueryException
43
	 */
44
	public function __construct( QueryBuild $queryBuild, $table = null )
45
	{
46
		parent::__construct( $queryBuild, $table );
47
	}
48
49
	public function getSyntax( $replacement = self::REPLACEMENT_NONE )
50
	{
51
		$syntax = array();
52
53
		/**
54
		 *  Explain
55
		 */
56
		$syntax[] = $this->getExplainSyntax();
57
58
		/**
59
		 * UPDATE statement
60
		 */
61
		$syntax[] = $this->statement;
62
63
		/**
64
		 * PRIORITY
65
		 */
66
		$syntax[] = $this->queryStructure->getElement( QueryStructure::PRIORITY );
67
68
		/**
69
		 * TABLE update
70
		 */
71
		$syntax[] = 'FROM ' . $this->queryStructure->getElement( QueryStructure::TABLE );
72
73
		/**
74
		 * WHERE clause
75
		 */
76
		$syntax[] = $this->getWhereSyntax();
77
78
		/**
79
		 * ORDER BY clause
80
		 */
81
		$syntax[] = $this->getOrderBySyntax();
82
83
		/**
84
		 * LIMIT clause
85
		 */
86
		$syntax[] = $this->getLimitSyntax();
87
88
		$syntax = implode( ' ', $syntax );
89
90
		return $this->getSyntaxReplace( $syntax, $replacement );
91
	}
92
93
	/**
94
	 * @return array|int|null
95
	 * @throws QueryException
96
	 */
97
	public function execute()
98
	{
99
		if ( $this->queryStructure->getElement( ( QueryStructure::WHERE_TRIGGER ) ) && !count( $this->queryStructure->getElement( QueryStructure::WHERE ) ) )
100
			throw new QueryException( 'Where clause is required for this statement!', QueryException::QUERY_ERROR_DELETE_NOT_FILTER );
101
102
		return PdoWrapperService::getInstance()->query($this->getSyntax(), $this->queryStructure->getElement(QueryStructure::BIND_PARAMS))->rowCount();
103
	}
104
105
106
}