Symfony2/Doctrine2:我想从用户信息中获取数据


MySampleBundleEntitySubject:
// ...
manyToOne:
author:
targetEntity: MyUserBundleEntityUser
joinColumn:
name: owner
referencedColumnName: id

与主题相关的用户可以获取。

$query = $this->getEntityManager()
->createQuery('
SELECT s, a
FROM MySampleBundle:Subject s
LEFT JOIN s.author a
WHERE s.author = :author
GROUP BY s.title'
)
->setParameter("author", $author);

相反,我应该如何从用户信息中获取主题?

例如,用户列表页面中的查询。

$query = $this->getEntityManager()
->createQuery('
SELECT u
FROM MyUserBundle:User u
GROUP BY u.username'
);

在这个时候,我也想得到一个相关科目的数据。

我使用FOSUserBundle
这是一个应该只更正My\UserBundle\Entity的问题吗
或者从orm设置的阶段来看是错误的?

我修改的过程。

步骤:1添加到My\UserBundle\Entity\User

/**
* @ORMOneToMany(targetEntity="MySampleBundleEntitySubject", mappedBy="author")
*/
private $subjects;
/**
* Get subjects
*
* @return DoctrineCommonCollectionsCollection 
*/
public function getSubjects()
{
return $this->subjects;
}

步骤:2添加"invertedBy">

MySampleBundleEntitySubject:
type: entity
// ...
manyToOne:
author:
targetEntity: MyUserBundleEntityUser
inversedBy: subjects
joinColumn:
name: owner
referencedColumnName: id

STEP:3查询

$query = $this->getEntityManager()
->createQuery('
SELECT u, s
FROM MyUserBundle:User u
LEFT JOIN u.subjects s
ORDER BY u.username'
);

已经获取了简单的数据。但这并不是一个完美的解决方案。

当联接表增加时,它停止应答,并且它将一直处于加载状态
我认为数据不一定太重
这个问题还不清楚。

另一个问题的例子

$query = $this->getEntityManager()
->createQuery('
SELECT u, s, a, c, i
FROM MyUserBundle:User u
LEFT JOIN u.subjects s
LEFT JOIN u.articles a
LEFT JOIN u.comments c
LEFT JOIN u.images i
// etc...
// It will be in the state of loading all the time
// when join table increases.
ORDER BY u.username'
);

相关内容

  • 没有找到相关文章

最新更新