我是蛋糕新手,并且正在练习类似Twitter的克隆游戏。此时,我有3个表:
users (id, name)
tweets (id, content, user_id)
followers (id, follower_id, following_id)
因此,作为sql的新手,我尝试使用以下语句针对我的数据库测试一些sql查询:
SELECT * FROM tweets WHERE user_id IN (SELECT following_id FROM followers WHERE follower_id = 1) <--- this 1 is just a magic number to test out the query
在此查询中,我试图查找用户(id为1)所关注的那些用户的所有tweet。
我的问题有两个方面。为了我的一生,我找不到如何在蛋糕中进行等效查找查询的方法。其次,我的sql查询涉及查看两个表,因此实际上是在两个cakephp模型上。我不确定如何从一个控制器使用两个模型来构造此查找查询。
$conditionsSubQuery['`followers`.`follower_id `'] = 1; $dbo = $this->Follower->getDataSource(); $subQuery = $dbo->buildStatement( array( 'fields' => array('`followers`.`following_id`'), 'table' => $dbo->fullTableName($this->Follower), 'alias' => 'followers', 'limit' => null, 'offset' => null, 'joins' => array(), 'conditions' => $conditionsSubQuery, 'order' => null, 'group' => null ), $this->Follower); $subQuery = ' `tweets`.`user_id` IN (' . $subQuery . ') '; $subQueryExpression = $dbo->expression($subQuery); $conditions[] = $subQueryExpression; $this->Tweet->find('all', compact('conditions'));