尝试以"Cakey"方式加载用户关注的所有帖子。
三个表: users(id,用户名,密码) posts(id,文本,user_id,created) follows(id,user_id,following_id)
我认为我的关系设置正确,因此我可以加载用户的粉丝和关注他们的人:
用户表
现在我正在努力筛选单个用户关注的所有用户的帖子。 我认为我需要使用这里记录的
三个表: users(id,用户名,密码) posts(id,文本,user_id,created) follows(id,user_id,following_id)
我认为我的关系设置正确,因此我可以加载用户的粉丝和关注他们的人:
用户表
$this->belongsToMany('Following', [
'className' => 'Users',
'foreignKey' => 'user_id',
'targetForeignKey' => 'following_id',
'joinTable' => 'follows'
]);
$this->belongsToMany('Followers', [
'className' => 'Users',
'foreignKey' => 'following_id',
'targetForeignKey' => 'user_id',
'joinTable' => 'follows'
]);
以下是表格
$this->belongsTo('Users', [
'foreignKey' => 'user_id',
'joinType' => 'INNER'
]);
文章表
$this->belongsTo('Users', [
'foreignKey' => 'user_id',
'joinType' => 'INNER'
]);
现在我正在努力筛选单个用户关注的所有用户的帖子。 我认为我需要使用这里记录的
matching()
方法:通过匹配和连接筛选关联数据,但似乎没有做对。 尝试以下内容:$user_id = $this->Auth->user('id');
$posts = $this->Posts->find()->matching('Users.Following', function ($q) use ($user_id) {
return $q->where(['Users.id' => $user_id]);
})->all();
更新:
我认为我的关系设置正确,这个查找将返回用户以及他们正在关注的所有用户:
$users = $this->Posts->Users->get(1, [
'contain' => ['Following']
]);