У меня есть вопрос, который сводит меня с ума, и я должен признать, что у меня нет такого опыта в CakePHP. Как упоминалось в этом вопросе, Использование DISTINCT в функции поиска CakePHP, использование DISTINCT таким образом:
$this->Model->find('all', array('fields'=>'DISTINCT field_name'));
не возвращает значения DISTINCT, вместо этого он возвращает все строки. На самом деле DISTINCT здесь совершенно бессмысленен, потому что по какой-то причине CakePHP добавляет TableName
. id
в SQL-запросе (почему?? Могу ли я удалить ссылку на идентификатор??), эффективно возвращая каждый первичный ключ DISTINCT (= все строки = бесполезно).
Итак, я по-прежнему хочу вернуть значения DISTINCT определенного столбца field_name.Могу ли я сделать это, используя только функцию find('all') или find('list')? Действительно ли это правильный способ сделать это с помощью этой функции Set::extract(), описанной в ссылке выше? Это кажется слишком косвенным решением CakePHP, обычно Cake делает мою жизнь проще. :-) Как правильно использовать find и DISTINCT вместе? Может быть, DISTINCT не работает для find()?
Глядя на CookBook, они говорят: «Быстрый пример выполнения запроса DISTINCT. Вы можете использовать другие операторы, такие как MIN(), MAX() и т. д., аналогичным образом:»
array('DISTINCT (User.name) AS my_column_name'),
'order' = >array('User.id DESC')
)
?>
Источник : http://book.cakephp.org/2.0/en/models/retrieving-your-data.html
Это указывает на возможность использования DISTINCT, но что здесь что? Соответствует ли (User.name) field_name, для которого я хочу использовать DISTINCT, или my_column_name является моим field_name?
Наконец, изменилось ли что-нибудь из этого при переходе с CakePHP 1.x на CakePHP 2.x? Т.е. ответы для CakePHP 1.x, представленные на Stackoverflow, все еще актуальны?
Заранее спасибо!