首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >原理2 ArrayCollection滤波器方法

原理2 ArrayCollection滤波器方法
EN

Stack Overflow用户
提问于 2011-12-01 07:11:39
回答 3查看 117.9K关注 0票数 65

在使用延迟加载的同时,我能从Doctrin2中的arrayCollection中过滤出结果吗?例如,

代码语言:javascript
复制
// users = ArrayCollection with User entities containing an "active" property
$customer->users->filter('active' => TRUE)->first()

对我来说,不清楚过滤器方法是如何实际使用的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-01 13:21:50

Boris Guéry的答案在这篇文章中,可能会对你有所帮助:Doctrine 2, query inside entities

代码语言:javascript
复制
$idsToFilter = array(1,2,3,4);

$member->getComments()->filter(
    function($entry) use ($idsToFilter) {
       return in_array($entry->getId(), $idsToFilter);
    }
); 
票数 100
EN

Stack Overflow用户

发布于 2012-05-10 22:22:15

您的用例将是:

代码语言:javascript
复制
    $ArrayCollectionOfActiveUsers = $customer->users->filter(function($user) {
                        return $user->getActive() === TRUE;
                    });

如果添加->first(),将只返回第一个条目,这并不是您想要的结果。

@ Sjwdavies您需要将()放在要使用的传递变量周围。你也可以缩短,因为in_array返回值已经是布尔值了:

代码语言:javascript
复制
    $member->getComments()->filter( function($entry) use ($idsToFilter) {
        return in_array($entry->getId(), $idsToFilter);
    });
票数 15
EN

Stack Overflow用户

发布于 2012-08-30 20:24:47

Collection#filter方法确实会立即加载所有成员。在规则2.3中将添加SQL级别的过滤。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8334356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档