Я уже определил значения переменных условия. Мне нужно написать этот формат Как я могу написать это.
$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');
Условия обычно обрабатываются как массив, не как строка так, например, это:
$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 ()
условия условия, и сравнение, если оно не равно, — в ключе массива.
Обязательно проверю документация для версии, которую вы используете, чтобы узнать больше о как использовать нумерацию страниц а также как сделать запрос к базе данных.
Других решений пока нет …