我有關於模型關聯的問題。考慮以下應用程序:每個月向用戶提出一個新問題。這些能夠給出這個問題的提示,而其他用戶有能力對這個提示做出反應。我的模型設置是這樣的:在兩張桌子上加入相同模型的蛋糕PHP
Users hasMany Tips, Reactions
Tips belongsTo User
Tips hasMany Reactions
Reactions belongsTo User, Tip
現在我想從所有用戶那裏獲得有關該問題的所有提示。我簡單地在提示表上找到所有提示,這些提示表返回給我的所有與他們的用戶和反應相關的提示。然而,這些反應並不包含用戶,這顯然非常重要。
Cake自動將我的查找全部轉換爲兩個查詢:一個在提示表上連接用戶,一個在反應表上,但用戶表中沒有連接,這正是我需要的。
所以我的問題是:爲什麼用戶表沒有加入反應,我該如何解決這個問題?
代碼:
用戶模型:
public $hasMany = array('Tip', 'Reaction');
提示模型:
public $hasMany = array('Reaction' => array(
'foreignKey' => 'tip_id'
));
public $hasOne = array('User' => array(
'fields' => array(
'User.id, User.first_name, User.last_name'
),
'foreignKey' => 'id'
));
反應模型:
public $belongsTo = array('Tip', 'ReactionUser' => array(
'className' => 'User',
'foreignKey' => 'id'
));
控制器:
$tips = $this->Tip->find('all');
OUTPUT:
array(
(int) 0 => array(
'Tip' => array(
'id' => '1',
'user_id' => '1',
'question_id' => '1',
'tip' => 'Testing da new datavbase',
'votes' => '0',
'approved' => '1',
'pic' => '',
'created' => '2012-05-18 09:22:56'
),
'User' => array(
'id' => '1',
'first_name' => 'Bart',
'last_name' => 'De Bock'
),
'Reaction' => array(
(int) 0 => array(
'id' => '1',
'tip_id' => '1',
'user_id' => '1',
'reaction' => 'lorem ipsum',
'votes' => '0',
'approved' => '1',
'pic' => '',
'created' => '0000-00-00 00:00:00'
)
)
),
(int) 1 => array(
'Tip' => array(
'id' => '2',
'user_id' => '2',
'question_id' => '1',
'tip' => 'Test',
'votes' => '0',
'approved' => '1',
'pic' => '',
'created' => '2012-05-18 10:22:51'
),
'User' => array(
'id' => '2',
'first_name' => 'Deborah',
'last_name' => 'Rochtus'
),
'Reaction' => array(
(int) 0 => array(
'id' => '2',
'tip_id' => '2',
'user_id' => '3',
'reaction' => 'Say whaat?',
'votes' => '2',
'approved' => '1',
'pic' => '',
'created' => '2012-05-18 10:33:32'
),
(int) 1 => array(
'id' => '3',
'tip_id' => '2',
'user_id' => '4',
'reaction' => 'Hmmm..',
'votes' => '0',
'approved' => '1',
'pic' => '',
'created' => '2012-05-18 10:33:44'
)
)
)
)
正如你所看到的,這些反應不包含關聯的用戶...
感謝您的幫助!
讓我看看你的代碼,你試過什麼? –
請告訴我你的控制器的完整代碼.... ur模態看起來很好.. –
完成,更新超過 – baRToooo