Mik*_*ike 0 symfony doctrine-orm
我正在使用一对多关系的学说,其中每个用户实体都有许多帖子实体.所以我有一个像这样的学说查询
$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT u, p FROM MYUserBundle:User u
JOIN u.post p'
);
Run Code Online (Sandbox Code Playgroud)
然后,我可以获得这样的用户帖子
foreach($query->getResult() as $user){
//a bunch of posts related to this user
$posts = $user->getPosts();
}
Run Code Online (Sandbox Code Playgroud)
为方便起见,我想创建一个API,允许我根据列值从这个$ posts对象中获取特定帖子或帖子,而不使用更多查询.所以例如我有一个名为post_slug的列,所以我想能够说
$posts = $user->getPosts();
$post = $posts->findBySlug('my_slug');
//or something along those lines...
Run Code Online (Sandbox Code Playgroud)
这可以通过$ posts对象或Post实体类完成吗?
Doctrine的藏品是可过滤的.因此,假设存储了Post实体User::$posts,请在您的用户实体中执行此操作.
public function getPostsBySlug( $slug )
{
return $this->posts->filter( function( Post $post ) use ( $slug )
{
return $post->getSlug() == $slug;
} );
}
Run Code Online (Sandbox Code Playgroud)
然后就可以了
$posts = $user->getPostsBySlug( 'my_slug' );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2540 次 |
| 最近记录: |