我一直在用find()查詢摔跤一段時間。有關表格的參考,請參閱此處的問題:CakePHP Twitter-clone: Can't get follow-system to work。CakePHP在HABTM關係中的查找查詢中返回錯誤的列
但是,簡而言之,這是一個我爲自學而做的推特克隆。我有三張桌子。
Users (id, name)
Tweets (id, user_id, content, date)
UserUsers (id, user_id, follower_user_id)
作爲模型,我有用戶,推文和關注者(HABTM用戶)。
現在,我有這樣的查找查詢:
$this->User->bindModel(array('hasOne' => array('UserUsers')));
$fields = array('User.username');
$conditions = array(
'UserUsers.user_id'=> $current_id);
$contain = $this->User->contain(array(
'UserUsers',
'Tweet' => array(
'fields'=> array('Tweet.content', 'Tweet.date'),
'order' => 'Tweet.date DESC',
'limit' => 1)));
$data = $this->User->find('all', compact('fields', 'conditions', 'contain'));
將會產生這條SQL語句,這幾乎是我想要的:
SELECT `User`.`username`, `User`.`id` FROM `users` AS `User` LEFT JOIN `user_users` AS `UserUsers` ON (`UserUsers`.`user_id` = `User`.`id`) WHERE `UserUsers`.`user_id` = 1
這是非常接近的,但它的返回錯誤我的表中的列。我想產生以下SQL語句:
SELECT `User`.`username`, `User`.`id` FROM `users` AS `User` LEFT JOIN `user_users` AS `UserUsers` ON (`UserUsers`.`follower_user_id` = `User`.`id`) WHERE `UserUsers`.`user_id` = 1
任何幫助如何調整我的find()查詢將不勝感激!謝謝!
您是否嘗試過在你的用戶模型'「associationForeignKey」 =>「follower_user_id''? – Ross
是的,我的用戶模型具有這樣的: \t變量$ hasAndBelongsToMany =陣列( '跟隨'=>陣列( '的className'=> '跟隨者', 'joinTable'=> 'USER_USERS', '外鍵' =>'user_id', 'associationForeignKey'=>'follower_user_id' ) ); – kurisukun