我有3张桌子: - 用户 - 帖子 - 订阅(默认情况下应为posts_users(n-n))
订阅表是此关系所需的n-n表。我不想把它称为“posts_users”,因为它对我的系统来说非常混乱,因为我在用户和帖子之间有更多的关系。
为了创建hasAndBelongsToMany关系,我做了这个:
public $hasAndBelongsToMany = array(
'Subscriptions' => array(
'className' => 'User',
'joinTable' => 'subscriptions',
'foreignKey' => 'post_id',
'associationForeignKey' => 'user_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
public $hasAndBelongsToMany = array(
'Post' => array(
'className' => 'Post',
'joinTable' => 'subscriptions',
'foreignKey' => 'user_id',
'associationForeignKey' => 'post_id',
'unique' => 'keepExisting',
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
假设我想找到ID为3的用户的订阅帖子。 有没有办法查找来检索用户订阅的帖子的数据? 我应该在哪个模型中进行查询?如何??
感谢。
答案 0 :(得分:0)
确定。最后我明白了。
您可以从两个相关模型中的任何一个进行查询。在这种情况下,发布或用户。
$this->Post->User->find('all', array(
'conditions' => array('User.id' => $this->Session->read('Auth.User.id')),
'contain' => array('Subscriptions')
));
这将返回当前用户的订阅票证(在订阅数组中)。