我一直在用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