下記を実行すると、
$this->TestTable->find('all', array( 'fields' => array( 'TestTable.name', 'TestTable.modified', ), // 'group' => array('TestTable.name'), 'order' => array('TestTable.modified DESC') ));
結果はこんな感じになります。
array(3) { [0]=> array(1) { ["TestTable"]=> array(2) { ["name"]=> string(6) "orange" ["modified"]=> string(19) "2021-06-11 10:05:00" } [1]=> array(1) { ["TestTable"]=> array(2) { ["name"]=> string(5) "budou" ["modified"]=> string(19) "2021-06-11 10:02:00" } [2]=> array(1) { ["TestTable"]=> array(2) { ["name"]=> string(4) "budou" ["modified"]=> string(19) "2021-06-11 10:01:00" } }
このnameが重複しているものを弾きつつ、中でもmodifiedが新しいものを取得したい。
つまり、
["name"]=> string(6) "orange" ["modified"]=> string(19) "2021-06-11 10:05:00"
と
["name"]=>
string(5) "budou"
["modified"]=>
string(19) "2021-06-11 10:02:00"
のみ。
それ以前(10:01:00以下)にnameがbudouのものがあったとしても取得しないようにしたい。
ここで、orderを入れたがなぜか最新のものと最古のものが取得された。
つまり、
["name"]=>
string(6) "orange"
["modified"]=>
string(19) "2021-06-11 10:05:00"
と
["name"]=>
string(4) "budou"
["modified"]=>
string(19) "2021-06-11 10:01:00"
どう記述しなおすべき?findは諦めて全件取得後弾くべき?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/22 00:46