Ошибка с поисковым запросом в cakephp

Код CakePHP

$data = $this->DropDownMultiple->find('all',array(
            'conditions'=>array('FIND_IN_SET(?,DropDownMultiple.interest)' => array('football')),
            'order'=>'created_on desc'
            )
        );

SQL-запрос

SELECT DropDownMultiple.*
FROM `cakephp_tutorial`.`drop_down_multiples` AS `DropDownMultiple`
WHERE FIND_IN_SET('football',`DropDownMultiple`.`interest`) =
ORDER BY `created_on` DESC

Синтаксическая ошибка

Синтаксическая ошибка или нарушение доступа: 1064 Ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «ORDER BY created_on desc» в строке 1

Проблема заключается в том, чтобы вставить знак = в конце условия where. Почему это происходит? Где я не прав? Помоги мне.


person Sadikhasan    schedule 09.07.2014    source источник
comment
Связанный: stackoverflow.com/questions/9545045/   -  person joshua.paling    schedule 09.07.2014
comment
@joshua.paling Если я поставлю прямое значение в find_in_set, оно будет работать нормально, но параметризованное не будет работать   -  person Sadikhasan    schedule 09.07.2014
comment
@Sadikhasan, что бы ни предложил ndm по вашему предыдущему вопросу, у меня тоже не работает.   -  person Rajeev Ranjan    schedule 09.07.2014
comment
@RajeevRanjan Да, ты прав! Я также проверял по-разному, но это не работает.   -  person Sadikhasan    schedule 09.07.2014
comment
Ребята, то, что я вам показал, определенно работает! @Садихасан   -  person ndm    schedule 09.07.2014


Ответы (1)


Почему бы вам не использовать код, который Я разместил в комментариях исходные вопросы ответа?

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

Однако вы не используете формат, который я вам показал:

$data = $this->DropDownMultiple->find('all', array(
        'conditions' => array(
            'FIND_IN_SET(?, `DropDownMultiple`.`interest`)' => 'football'
        ),
        'order' => 'created_on desc'
    )
);

Обратите внимание на кавычки вокруг имени модели и поля и, самое главное, на пробел после ,. Требование этого места может быть ошибкой в ​​CakePHP, не уверен.

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

person ndm    schedule 09.07.2014