0

私はモデルAを持っています

$hasMany = array('B' => array('order' => 'B.created DESC'), 
                 'C' => array('order' => 'C.created ASC')
           );

だから今、データベースから A(B,C) の 5 つの最も荒れ果てたエントリを取得したいと思います。

それ、どうやったら出来るの?

/編集: 言い換えると: 名前、住所、電子メールなどの情報を持つモデル ユーザーがいると仮定します。ユーザーのページには多くのモデル投稿もあります。また、彼のページにはその他のモデルも多数掲載されています。したがって、User:Post と User:Other には 1:n の関係があります。ここで、「変更された」値の最高値 (User.modified、Post.modified または Other.modified) が 1 である、私のユーザーの 5 人のユーザーをフェッチしたいと思います。そのうち、すべてのユーザーの中で最も低い 5 つです。つまり、プロファイルを最も長く更新していない 5 人のユーザーです。

4

1 に答える 1

0

この手法を使用すると、将来的にデータの不整合が発生することが予想されます。私ならこうします。

ユーザーテーブルにフィールドをlastactivity 追加 AppController.php で beforeSave 関数を追加

public function beforeSave() {
   $save_data = $this->data;
   if(isset($save_data['User']['modified']) || isset($save_data['Post']['modified'] || isset($save_data['Other']['modified']))){
      $data = array();
      $data['User']['id'] = $this->Auth->user('id');
      $data['User']['lastactivity'] = date("Y-m-d H:i:s");
      $this->User->save($data);
   }

}
于 2012-12-05T12:24:32.503 に答える