Использование комплекса, где условия в Zend Framework - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть статическая функция, в которой я передаю некоторые переменные из контроллера, В этой функции я выполняю некоторые соединения с таблицами БД и некоторые другие запросы, значения, которые я передаю, получает из фильтров, если я невыбирая любые фильтры, я получу нулевые значения.

public static function Myfunction($var1,$var2,$var3)
{
 ...some database queries..
->joinLeft(some conditions)  
->joinLeft(some conditions)
->where('table1.val1 = ?',$var1)
->where('table2.val2 = ?', $var2)
->where('table3.val3 =?' ,$var3);

 return $data
}

Здесь Если значения, которые я передаю, являются нулевыми, мне не нужно проверять первое условие, аналогично в случае 2-го и 3-го, если значениеравно нулю, тогда мне не нужно проверять какие-либо условия, и мне нужно извлечь все значение из БД в соответствии с запросом, кто-нибудь, пожалуйста, помогите мне, как это сделать в Zend?

1 Ответ

0 голосов
/ 05 июня 2019

Я использую php Closure для этого случая, чтобы инкапсулировать проверку условий следующим образом:

public static function Myfunction($var1,$var2,$var3)
{
    return $this->tableGateway->select(function (Select $select) use ($var1, $var2, $var3) {
            ...some database queries..
            $select->joinLeft(some conditions)  
            $select->joinLeft(some conditions);

            if (!empty($var1)) {
                    $select->where('table1.val1 = ?',$var1);
            }

            if (!empty($var2)) {
                    $select->where('table2.val2 = ?', $var2);
            }

            if (!empty($var3)) {
                    $select->where('table3.val3 =?' ,$var3);
            }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...