2015-02-11 45 views
0

做$這個 - 後>事件 - >找到()我得到以下結果:

array(
'Event' => array(
    'event_id' => '72', 
    'user_id' => '54c7e9f9-2520-48ca-ab70-1dfccf31a6d6', 
    'title' => 'dfg', 
    'start' => '2015-02-11 20:28:00', 
    'public' => '0' 
), 
'User' => array(
    'password' => '*****', 
    'id' => '54c7e9f9-2520-48ca-ab70-1dfccf31a6d6', 
    'username' => '*', 
    'slug' => '', 
    'password_token' => null, 
    'email' => '*', 
    'email_verified' => true, 
    'email_token' => '*', 
    'email_token_expires' => '2015-01-28 20:41:45', 
    'tos' => true, 
    'active' => true, 
    'last_login' => '2015-02-11 23:17:48', 
    'last_action' => null, 
    'is_admin' => true, 
    'role' => 'registered', 
    'created' => '2015-01-27 20:41:45', 
    'modified' => '2015-02-11 23:17:48' 
), 
'EventGuest' => array(
    (int) 0 => array(
     'id' => '84', 
     'event_id' => '72', 
     'guest_id' => '54db93be-0ef8-47d2-9bdb-118ccf31a6d6', 
     'accepted' => '1' 
    ), 
    (int) 1 => array(
     'id' => '85', 
     'event_id' => '72', 
     'guest_id' => '54d1185f-8968-485e-b88f-1dd8cf31a6d6', 
     'accepted' => '0' 
    ) 
) 

我怎樣才能解決guest_id的用戶名,分佈在表的用戶?

基本上我想要的東西輸出如下: ...

'EventGuest' => array(
    (int) 0 => array(
     'id' => '84', 
     'event_id' => '72', 
     'guest_id' => '54db93be-0ef8-47d2-9bdb-118ccf31a6d6', 
     'username' => 'Test', 
     'accepted' => '1' 
    ), 
    (int) 1 => array(
     'id' => '85', 
     'event' => '72', 
     'guest_id' => '54d1185f-8968-485e-b88f-1dd8cf31a6d6', 
     'username' => 'Test2', 
     'accepted' => '0' 
    ) 
) 

(請注意現場用戶名

我怎樣才能做到這一點頭也不擡每單個用戶名一個,還是有一個不錯的CakePHP功能?

關係:

事件:

屬於關聯:

  • 用戶

的hasMany:

  • EventGuest

EventGuest:

屬於關聯:

  • 事件
  • 用戶

用戶

的hasMany:

  • 事件
  • EventGuest

能否請你解釋一下我,我怎麼能有效地解決這個問題呢?

隨着親切的問候,

Battlestr1k3

回答

0

你不會得到名稱爲用戶名字段,這根本就不是蛋糕如何格式化結果。你可以這樣做:

假設你正在使用中可容納的行爲試試這個:

'contain' => [ 
    'User', 
    'EventGuest' => [ 
     'User' => [ 
      'fields' => [ 
       'User.username' 
      ] 
     ] 
    ] 
] 

它應該給你這樣的:

'EventGuest' => array(
    (int) 0 => array(
     'id' => '84', 
     'event_id' => '72', 
     'guest_id' => '54db93be-0ef8-47d2-9bdb-118ccf31a6d6', 
     'accepted' => '1', 
     'User' => array(
      'username' => 'Test' 
     ) 
    ), 
) 

如果您急需依靠具有「用戶名「鍵,然後在Model :: afterFind()回調數組上運行數組,然後設置鍵並從User數組中複製名稱。但我不會這樣做,浪費處理時間。

+0

不幸的是,這並沒有帶來理想的結果,現在在結果中沒有EventGuest。在Event.php中,我添加了公共$ actsAs = array('Containable');,以及在User.php和EventGuest.php中。 – Battlestr1k3 2015-02-12 13:06:36

+0

對於用戶模型我使用插件位於unter /插件/用戶,也許這可能是重要的關係 – Battlestr1k3 2015-02-12 13:38:41

0

繼CakePHP conventions EventGuest表必須被稱爲EventUser。 那麼,從用戶到事件的關係是什麼?我們只知道,從事件到用戶的關係.. 然後,如果我理解正確的話你的模型,你可以找到與指定用戶ID的事件:

$this->User->find('all',array('conditions'=>array('User.username'=>$id))); 

其中的$ id是你需要找到用戶名的ID 。

+0

謝謝,我已經有數組('條件'=>數組('事件。'。$ this->事件 - > primaryKey => $ id))來獲取我正在查看的事件,但它不會影響結果中的哪些字段。我更新了關係(請參閱第一篇文章)。 – Battlestr1k3 2015-02-12 12:59:57

+0

我不能將用戶重命名爲EventUser,因爲我想保留它一般情況下,用戶不僅有事件,他還有友誼等。 – Battlestr1k3 2015-02-12 13:08:01

0

我通過設置 $ this-> Event-> recursive = 3;但我認爲我可以更有效地做到這一點,因爲它甚至可以顯示來賓的友誼中的數據。

編輯:用以下行輸出看起來不錯: $ this-> Gamesession-> contains(array('GamesessionGuest.User.username'));