CakeDC Search не выполняет поиск с пустым значением
Я не уверен, правильно ли я понимаю emptyValue. Я хочу иметь возможность фильтровать пользователей по установленному языку, но также некоторые пользователи еще не установили язык, поэтому у них есть NULL. Вот код:
// Model
public $filterArgs = array(
'locale' => array('type' => 'value', 'field' => 'Profile.locale', 'allowEmpty' => true),
);
// Controller
public $presetVars = array(
'locale' => array('type' => 'value', 'allowEmpty' => true, 'emptyValue' => '0')
);
В БД поле Profile.locale может иметь значение NULL, а его значение по умолчанию - NULL. Теперь мнение:
<?php echo $this->Form->select('locale', am(array('0' => __('Not set')), Configure::read('User.locales'))); ?>
Это дает мне правильный HTML:
<select name="data[User][locale]" class="input-small" id="UserLocale">
<option value=""></option>
<option value="0">Not set</option>
<option value="eng">English</option>
<option value="deu">Deutsch</option>
<option value="pol">Polski</option>
</select>
Но когда я пытаюсь выполнить поиск и выбрать "Не задано", параметр локали не отображается в URL. Также, когда я печатаю от руки ?locale=0
в URL я получаю в запросе WHERE 'Profile'.'locale' = '0'
не WHERE 'Profile'.'locale' IS NULL
,
Я использую CakeDC Search текущую ветку разработчика и CakePHP 2.4.6.