私は私を夢中にさせている質問があります、そして私はCakePHPでそれほど経験がないことを認めなければなりません。この質問で述べたように 、CakePHPの検索関数でDISTINCTを使用し、次のようにDISTINCTを使用します。
$this->Model->find('all', array('fields'=>'DISTINCT field_name'));
DISTINCT値を返さず、代わりにすべての行を返します。実際、ここでのDISTINCTは完全に無意味です。なぜなら、何らかの理由で、CakePHPがを追加するからTableName
です。id
SQLクエリで(なぜ?? id参照を削除できますか??)、すべてのDISTINCT主キー(=すべての行=役に立たない)を効果的に返します。
したがって、特定のfield_name列のDISTINCT値を返したいのです。find('all')またはfind('list')関数だけを使用してそれを行うことはできませんか?上記のリンクで説明されているこのSet::extract()関数を使用してそれを行う適切な方法は本当にありますか?これはCakePHPによる過度に間接的な解決策のようです。通常、Cakeは私の生活を楽にしてくれます。:-) findとDISTINCTを一緒に使用する適切な方法は何ですか?たぶんDISTINCTはfind()では機能しませんか?
CookBookを見ると、「DISTINCTクエリを実行する簡単な例です。同様の方法でMIN()、MAX()などの他の演算子を使用できます。」と彼らは言います。
<?php
array(
'fields' => array('DISTINCT (User.name) AS my_column_name'),
'order' = >array('User.id DESC')
)
?>
出典: http: //book.cakephp.org/2.0/en/models/retrieveing-your-data.html
これは、DISTINCTを使用できるはずであることを示していますが、ここでは何をしますか?(User.name)は、DISTINCTが必要なfield_nameに対応していますか、それともmy_column_nameは私のfield_nameですか?
最後に、CakePHP 1.xからCakePHP2.xに移行するときに、これは変更されましたか?つまり、Stackoverflowで見られるCakePHP 1.xの答えはまだ関連していますか?
前もって感謝します!