Php &引用;用户遵循;三方关系

Php &引用;用户遵循;三方关系,php,mysql,orm,propel,Php,Mysql,Orm,Propel,有人能给我指出一个正确的方向去做“用户跟随”之类的事情吗。我有3个表:users、useru follows和a posts 如果我创建一个用户对象,我可以得到一个用户id的数组,然后一个post对象就知道是哪个用户发布了它,但要为给定用户所关注的用户获取帖子却很困难 目前有这个,它返回每个人的帖子 $posts = PostsQuery::create() ->orderByDate('desc') ->limit('12')

有人能给我指出一个正确的方向去做“用户跟随”之类的事情吗。我有3个表:users、useru follows和a posts

如果我创建一个用户对象,我可以得到一个用户id的数组,然后一个post对象就知道是哪个用户发布了它,但要为给定用户所关注的用户获取帖子却很困难

目前有这个,它返回每个人的帖子

    $posts = PostsQuery::create()
        ->orderByDate('desc')
        ->limit('12')
        ->find();
    return $posts;

需要执行filterByXXX()…

ORM不支持同一表的实体之间的多对多关系。但是你可以用它来工作

使用此选项,您的代码可以如下所示:

$user = UsersQuery::create()->findPk($userId);

$follows = $user->getFollows();

$posts = PostsQuery::create()
        ->filterByUser($follows)
        ->orderByDate('desc')
        ->limit('12')
        ->find();
下面是模式的相关部分:


使用
use*Query
可以轻松完成此操作

$posts = PostsQuery::create()
    ->useUserFollowsQuery()
        ->filterByUserId([12,34,55])
    ->endUse()
    ->orderByDate('desc')
    ->limit('12')
    ->groupById() //important if you join a one-to-many relation
    ->find();
return $posts;
优化的查询将使用addJoinCondition:

->innerJoinUserFollows()
->addJoinCondition('UserFollows', 'UserFollows.user_id = ?',[123,34], Criteria::IN) 

试试这个:肯定帮了我的忙。给我指出了正确的方向,谢谢!