CakePHP нумерация с условием

Я уже определил значения переменных условия. Мне нужно написать этот формат Как я могу написать это.

$this->Paginator->settings = array('conditions' => array(
if(!empty($this->request->data['filter']['delivery']))
{
'Gig.delivery <=' => $this->request->data['filter']['delivery'],
}
if(!empty($this->request->data['filter']['delivering']))
{
"Gig.bangsalsodelivering IN ({$csv_deliveringfilters})",
}
if(!empty($this->request->data['filter']['servicetype']))
{
"Gig.bangsservicetype IN ({$csv_bangsservicetypesfilters})",
}
if(!empty($this->request->data['filter']['style']))
{
"Gig.bangsstyles IN ({$csv_stylefilters})",
}
if(!empty($this->request->data['filter']['fileformate']))
{
"Gig.bangsfileformates IN ({$csv_fileformatefilters})",
}
));
$agetGigsItem = $this->Paginator->paginate('Gig');

-1

Решение

Условия обычно являются массивом

Условия обычно обрабатываются как массив, не как строка так, например, это:

$this->Paginator->settings = [
'conditions' => ['Gig.field' => 'is this value']
];

$agetGigsItem = $this->Paginator->paginate('Gig');

Будет применять это условие SQL:

WHERE Gig.field = "is this value"

это плохая идея строить условия с использованием конкатенации строк. В дополнение к тому, что это более громоздко, это означает, что вам придется самостоятельно обрабатывать экранирование пользовательского ввода.

Рабочий раствор

Учитывая код в вопросе, это будет делать то, что спрашивают:

$conditions = [];
$filter = $this->request->data['filter'];

if(!empty($filter['delivery'])) {
$conditions['Gig.delivery <='] = $filter['delivery'];
}

if(!empty($filter['delivering'])) {
$conditions['Gig.bangsalsodelivering'] = explode(',', $filter['delivering']);
}

if(!empty($filter['servicetype'])) {
$conditions['Gig.bangsservicetype'] = explode(',', $filter['servicetype']);
}

if(!empty($filter['style'])) {
$conditions['Gig.bangsstyles'] = explode(',', $filter['style']);
}

if(!empty($filter['fileformate'])) {
$conditions['Gig.bangsfileformates'] = explode(',', $filter['fileformate']);
}

$this->Paginator->settings['conditions'] = $conditions;
$agetGigsItem = $this->Paginator->paginate('Gig');

Обратите внимание, что значения массива автоматически преобразуются в IN () условия условия, и сравнение, если оно не равно, — в ключе массива.

Обязательно проверю документация для версии, которую вы используете, чтобы узнать больше о как использовать нумерацию страниц а также как сделать запрос к базе данных.

2

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

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

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