Php Symfony 2为多个用户查找日志

Php Symfony 2为多个用户查找日志,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有3个表:用户、用户关注者和博客帖子。 用户可以跟随其他用户,并且用户通过用户id与博客文章相关 我需要得到所有我关注的人写的博客文章。 我试过这样的方法: $followedUsers = $user->getFollowedByMe(); //This one works $posts = $entityManager->getRepository('<BundleHere>:BlogPosts') ->findB

我有3个表:用户、用户关注者和博客帖子。 用户可以跟随其他用户,并且用户通过用户id与博客文章相关

我需要得到所有我关注的人写的博客文章。 我试过这样的方法:

$followedUsers = $user->getFollowedByMe(); //This one works
$posts = $entityManager->getRepository('<BundleHere>:BlogPosts')
                       ->findBy(array('user_id' => $followedUsers));

我尝试了更多的变化,但没能找到答案。也许有人知道通过多个对象而不仅仅是一个对象进行搜索的更好方法。

在示例中,您可以在blograrepository.php中使用此类代码

public function getBlogPost($userId)
{
    return $this
        ->_em
        ->createQueryBuilder('p')
        ->leftJoin('p.user', 'u')
        ->where('u.id = :id')
        ->setParameter('id', $userId)
        ->getQuery()
        ->getResult();
}
createQueryBuilder'p'将自动创建选择和从选择实体发布?从桌子上。 然后,您可以这样使用它:

$posts = $entityManager->getRepository('<BundleHere>:BlogPosts')->getBlogPost($userId);

我不能给你确切的查询,因为我们没有足够的关于你的实体的信息。但通过这种方式,您可以编写漂亮的查询来获得您想要的内容。

在示例中,您可以在blograrepository.php中使用这种代码

public function getBlogPost($userId)
{
    return $this
        ->_em
        ->createQueryBuilder('p')
        ->leftJoin('p.user', 'u')
        ->where('u.id = :id')
        ->setParameter('id', $userId)
        ->getQuery()
        ->getResult();
}
createQueryBuilder'p'将自动创建选择和从选择实体发布?从桌子上。 然后,您可以这样使用它:

$posts = $entityManager->getRepository('<BundleHere>:BlogPosts')->getBlogPost($userId);
我不能给你确切的查询,因为我们没有足够的关于你的实体的信息。但通过这种方式,您可以编写漂亮的查询,以获得您想要的内容。

您可以执行以下操作:

$posts = $entityManager->getRepository('<BundleHere>:BlogPosts')
    ->createQueryBuilder('b')
    ->whereIn('b.user', $followedUsers)
    ->getQuery()
    ->getResult();
“user”应该是用于在Blogpost对象中保存用户的属性的名称

您可以执行以下操作:

$posts = $entityManager->getRepository('<BundleHere>:BlogPosts')
    ->createQueryBuilder('b')
    ->whereIn('b.user', $followedUsers)
    ->getQuery()
    ->getResult();

“user”应该是用于在Blogpost对象中保存用户的属性的名称

所以我明白了,thanx伙计们用queryBuilder为我指明了正确的方向

$followedByMe = $user->getFollowedByMe(); //Getting users i follow
$followedIds = $followedByMe
->map(function( $obj ) { //Using map method to create an array of id's for all followers
    return $obj->getId(); //Value to put into array (in this case id)
})->toArray(); //Create an array and assign it to $followedIds variable

$qb = $em->getRepository('<BundleHere>:BlogPosts')->createQueryBuilder('b');
$posts = $qb->where($qb->expr()->in('b.user', $followedIds ))
->orWhere('b.user = :my_id')->setParameter('my_id', $user->getId()) //Get my posts too
->getQuery()
->getResult();

所以我明白了thanx伙计们用queryBuilder为我指明了正确的方向

$followedByMe = $user->getFollowedByMe(); //Getting users i follow
$followedIds = $followedByMe
->map(function( $obj ) { //Using map method to create an array of id's for all followers
    return $obj->getId(); //Value to put into array (in this case id)
})->toArray(); //Create an array and assign it to $followedIds variable

$qb = $em->getRepository('<BundleHere>:BlogPosts')->createQueryBuilder('b');
$posts = $qb->where($qb->expr()->in('b.user', $followedIds ))
->orWhere('b.user = :my_id')->setParameter('my_id', $user->getId()) //Get my posts too
->getQuery()
->getResult();