Скобка в условиях, когда с тонким pdo

Используя PHP Slim PDO, как можно выразить:

(условие 1 ИЛИ условие 2) И (условие 3 ИЛИ условие 4)

Это было бы что-то подобное (но очевидно этот код не работает):

$pdo->select()->from('items')
->whereOpenParenthesis()
->where('color', 'red','OR')
->where('size', 'xl')
->whereCloseParenthesis()
->whereOpenParenthesis()
->where('stock', '10','OR')
->where('price', '99')
->whereCloseParenthesis();

без необработанного SQL

(это случайные данные для решения вопроса)

0

Решение

Я добавил эти методы в эти классы.
Очевидно, что для вас было бы лучше расширить сам SLIM PDO, а не добавлять некоторый код.

поставщик \ стройный \ п.д.о. \ SRC \ PDO \ п \ WhereClause.php

public function openParenthesis(){
$this->container[] = ' ( ';
}
public function closeParenthesis(){
$this->container[] = ' ) ';
}

//Function amended :

/**
* @return string
*/
public function __toString()
{
if (empty($this->container)) {
return '';
}

$args = array();

foreach ($this->container as $where) {
$args[] = $where;
}

$str = implode('', $args);
$str = str_replace('(  AND', ' AND ( ', $str);
$str = str_replace('(  OR', ' OR ( ', $str);

$str = ' WHERE '.ltrim($str, ' AND');

return $str;
}

поставщик \ стройный \ п.д.о. \ SRC \ PDO \ Отчет \ StatementContainer.php

public function openParenthesis() {
$this->whereClause->openParenthesis();
}

public function closeParenthesis() {
$this->whereClause->closeParenthesis();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]