CakePHP 2.1 - Как правильно использовать DISTINCT в find()

У меня есть вопрос, который сводит меня с ума, и я должен признать, что у меня нет такого опыта в 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, все еще актуальны?

Заранее спасибо!

11
задан A.A Noman 29 October 2017 в 08:37
поделиться