我必须检查ArrayCollection中是否已存在Email实体,但我必须将电子邮件检查为字符串(实体包含ID以及与其他entites的某些关系,因此我使用单独的表来保留所有电子邮件).

现在,在第一次我写了这段代码:

/**
     * A new Email is adding: check if it already exists.
     *
     * In a normal scenario we should use $this->emails->contains().
     * But it is possible the email comes from the setPrimaryEmail method.
     * In this case,the object is created from scratch and so it is possible it contains a string email that is
     * already present but that is not recognizable as the Email object that contains it is created from scratch.
     *
     * So we hav to compare Email by Email the string value to check if it already exists: if it exists,then we use
     * the already present Email object,instead we can persist the new one securely.
     *
     * @var Email $existentEmail
     */
    foreach ($this->emails as $existentEmail) {
        if ($existentEmail->getEmail()->getEmail() === $email->getEmail()) {
            // If the two email compared as strings are equals,set the passed email as the already existent one.
            $email = $existentEmail;
        }
    }

但是阅读ArrayCollection类我看到了方法exists,这似乎是我做同样事情的一种更加优雅的方式.

但我不知道如何使用它:有人可以解释我如何使用这个方法给出上面的代码?

当然,在PHP中,Closure是一个简单的 Anonymous functions.您可以重写您的代码如下:
$exists =  $this->emails->exists(function($key,$element) use ($email){
        return $email->getEmail() === $element->getEmail()->getEmail();
        }
    );

希望这有帮助

php – 如何使用Doctrine的ArrayCollection :: exists方法的更多相关文章

  1. ios – 在Restkit 0.2中为给定的类添加两个请求描述符

    我需要从User类中提供两种不同类型的POST.我试图制作两个请求描述符并将其添加到我的对象管理器,但是我收到错误“Cannotaddarequestdescriptorforthesameobjectclassasanexistingrequestdescriptor.”我的代码有没有人知道如何解决这个问题,而不需要为这些请求创建一个单独的类?任何帮助是赞赏.谢谢.解决方法您可以使用动态映射来切

  2. 从iOS应用程序发送帖子到PHP脚本不工作…简单的解决方案就像

    我之前已经做了好几次了但是由于某些原因我无法通过这个帖子…我尝试了设置为_POST且没有的变量的PHP脚本……当它们未设置为发布时它工作精细.这是我的iOS代码:这里是PHP的一大块,POST变量不在正确的位置?我想这对于更有经验的开发人员来说是一个相当简单的答案,感谢您的帮助!解决方法$_POST是一个数组,而不是一个函数.您需要使用方括号来访问数组索引:

  3. swift学习2 元组 tuples

    swift中出现了一种新的数据结构,非常牛掰的元组tuples如果懂PHP的猿,会发现这个元组和PHP的数组非常类似,同样是可以默认不指定key,也可以指定key目前的学习疑问是,如何进行元组的遍历?

  4. [快速学会Swift第三方库] SQLite.swift篇

    [快速学会Swift第三方库]sqlite.swift篇sqlite.swift是一个使用纯Swift语言封装sqlite3的操作框架。

  5. CSSwiftExtension - 贡献一个非常好用的Swift extension集合

    CSSwiftExtension是我个人开源的一个非常有用的Swiftextension集合。

  6. 如何检查字符串是否包含Swift中的另一个字符串?

    在Objective-C中,检查Nsstring中的子字符串的代码是:但是我如何在Swift中这样做?你可以做与Swift完全相同的调用:我希望这是一个有用的解决方案,因为有些人,包括我,通过调用containsstring()遇到一些奇怪的问题。

  7. 尝试使用swift mailer,gmail smtp,php发送邮件

    这里是我的代码:在运行时出现此错误…

  8. Swift类型不符合协议NilLiteralConvertible

    我以为写这样的东西:这不会抛出这个错误。听起来像斯威夫特让我只写第二种方式。如果你的函数可以返回nil,那么它应该被声明为…然后呼叫者知道它可以是零。(你的第二个例子是工作,但会崩溃,因为退出将隐含地尝试解开nil。

  9. 快速内联条件?

    我如何在Swift这样做?(没有我没有阅读整个手册…我可能错过了第2页!)好的,所以它在第91页和以上看来是正确的。但是我试图用这样的字符串来使用它:但编译器不高兴。任何想法如果可能的话?这是我能够得到的如果你正在寻找一个单行的话,你可以把?

  10. swift3 – Alamofire 4.0,Swift 3 Post params没有通过

    当我升级到最新的一切时,以下停止发布参数,我不知道为什么……

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部