for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Kir\MySQL\Builder\Traits;
use Kir\MySQL\Builder\DBExpr;
use Kir\MySQL\Builder\Expr\OptionalExpression;
use Kir\MySQL\Builder\Internal\ConditionBuilder;
trait WhereBuilder {
use AbstractDB;
/** @var array<int, mixed> */
private $where = [];
/**
* @param string|array|OptionalExpression $expression
* @param array<int, mixed> $args
* @return $this
*/
public function where($expression, ...$args) {
if($expression instanceof OptionalExpression) {
if($expression->isValid()) {
$this->where[] = [$expression->getExpression(), $expression->getValue()];
}
} elseif(is_array($expression) || is_object($expression)) {
if(is_object($expression)) {
is_object($expression)
false
$expression = (array) $expression;
if(count($expression) > 0) {
$this->where[] = [$expression, $args];
} else {
return $this;
* @param string $query
* @return string
protected function buildWhereConditions($query) {
return ConditionBuilder::build($this->db(), $query, $this->where, 'WHERE');