Cakephp find возвращает пустой массив для испанских символов

Я использую последнюю версию CakePHP (2.1.x), и когда я выполняю поиск, подобный следующему, он возвращает пустой массив, когда поле Model.name содержит испанский символ:

$this->Model->find(
        'list', 
        array(
            'conditions' => array(
                'LOWER(Model.name) LIKE' => '%'.$keyword.'%'
            ),
            'fields' => array(
                'Model.id', 
                'Model.name'
            )
        )
    );

Когда я отображаю элемент sql_dump, запрос работает нормально и говорит: 0 Error, 1 Affected и 1 Num Rows; плюс, когда я пытаюсь выполнить запрос, он отлично работает и на phpMyAdmin.

Весь веб-сайт на английском языке, а тип контента — UTF-8. Я пытался изменить кодировку без успеха.

Поле хранится в БД (MySQL) как name varchar(255) latin1_swedish_ci, если это может помочь.


person Nicolas    schedule 17.05.2012    source источник


Ответы (2)


Возможно, вам также нужно указать кодировку utf-8 при подключении к базе данных.

Проверьте это, надеюсь, помогает

person pollirrata    schedule 17.05.2012
comment
Спасибо вам, я просто раскомментировал строку 'encoding' => 'utf8', моего подключения к БД, и это помогло! Ваше здоровье! - person Nicolas; 18.05.2012

На самом деле вам нужно указать utf-8 для базы данных:

Перейдите в ROOT/app/config/database.php.

В классе DATABASE_CONFIG измените кодировку

'encoding' => 'utf8',
person Amed    schedule 23.01.2015