2012-01-23 1 views
0

私はCakePHPを使ってメッセージングシステムを作成しています。モデルの面では、CakePHP - "contains"を使ってfindに含まれている不要なHABTM

Users HABTM Conversations 
Conversations hasMany Messages 
Messages belongTo User (the sender) 

は、だから私は、ユーザーの検索条件を実行しているよ、とインクルードが含まれている次のとおりです。

$user = $this->Conversation->User->find('first', array(
     'conditions' => array('User.id' => $user_id), 
     'contain' => array(
      'Conversation' => array(
       'ConversationsUser', 
       'Message' => array(
        'order' => 'Message.created DESC', 
        'limit' => 1, 
        'User' => array(
         'Student' => array(
          'University' 
         ), 
         'Recruiter' => array(
          'Org' 
         ) 
        ) 
       ) 
      ) 
     ) 
    )); 

私は結果を取得すると、私は$ユーザー[ '会話を取得'] [' Message '] [' User '] ['会話 '] - 基本的に、HABTMの参加は自動的に3段階で行われ、それを防ぐ方法はありません。この情報を検索から削除する方法はありますか?

+0

ここで、包含可能な動作を設定しましたか? AppModelで設定しない場合(または別のモデルでは)、Containableビヘイビアを使用しないモデルが含まれている場合、そのモデルは「再帰的」設定に従って関連するデータを取得します。 (これは推測のようなものなので、私は答えとしてまだ書いていないのです) – Joep

答えて

0

解決済み。

$this->Conversation->bindModel(array('hasOne' => array('ConversationsUser'))); 
$conversations = $this->Conversation->find('all', array(
     'conditions' => array('ConversationsUser.user_id' => $user_id), 
     'order' => 'Conversation.modified DESC', 
     'contain' => array(
      'ConversationsUser', 
      'User' => array(
       'conditions' => array('User.id <> ' . $user_id), 
       'ProfilePhoto' => array(
        'Attachment' 
       ), 
       'Student' => array(
        'University' 
       ), 
       'Recruiter' => array(
        'Org' 
       ) 
      ), 
      'Message' => array(
       'order' => 'Message.created DESC' 
      ) 
     ) 
    )); 

メッセージ内にユーザーがいる必要はありませんでした。

関連する問題