PHP 教义 : Test if an object is in an ArrayCollection

标签 php doctrine-orm contains equality arraycollection

我正在尝试使用方法 ArrayCollection::contains 来查找对象是否已经在我的集合中,但是当我这样做时:

//My ArrayCollection
$lesRoles = $drt->getDrtApplication()->getRoles();
$leRole = $lesRoles->first();
echo "Property appNom : ".$leRole->getRleApplication()->getAppNom()."// Property appRole : ".$leRole->getRleId()." <br>";


$role = new \Casgaya\Role(2,$drt->getDrtApplication());
echo "Property appNom : ".$role->getRleApplication()->getAppNom()."// Property appRole : ".$role->getRleId()." <br>";

var_dump($lesRoles->contains($role));

结果是:
属性 appNom:CORA//属性 appRole:2
属性 appNom:CORA//属性 appRole:2
bool (假)

由于 appNom 和 rleId 是实体 Role 拥有的仅有的两个属性,我希望它会返回 true。

编辑新测试用例:

echo "Test object role :  <br>";
var_dump($lesRoles==$role);
echo"<br>";
echo "Test integer property rleID from object role :  <br>";
var_dump($role->getRleId() == $leRole->getRleId());
echo"<br>";
echo "Test Application object property RleApplication from object role : <br> ";
var_dump($role->getRleApplication() == $leRole->getRleApplication());

结果是:

属性 appNom:CORA//属性 appRole:2
属性 appNom:CORA//属性 appRole:2
测试对象角色:
bool 值(假)
从对象角色测试整数属性 rleID :
bool 值(真)
从对象角色测试应用程序对象属性 RleApplication :
bool (真)

请注意,当我测试两个属性是否相等时,它们都为真。但是当我测试整个对象的相等性时,它是错误的。

所以问题不再是关于 ArrayCollection::contains,而是:
在相等的情况下比较两个学说实体的标准是什么?

最佳答案

我自己找到了解决方案,这里是给有同样问题的人:

我正在使用方法 ArrayCollection::exists 而不是 contains,所以我可以指定应该建立对象之间的相等性的标准:

以我为例:

$result = $lesRoles->exists(function($key,$element) use ($role) 
{
    return ($element->getRleApplication() == $role->getRleApplication() && $role->getRleId() == $element->getRleId());
});

注意这里的 $key 和 $element 是从集合中测试的当前对象。

关于PHP 教义 : Test if an object is in an ArrayCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35625149/

相关文章:

php - 我可以禁用 mysql 保护,允许在 phpmyadmin (XAMPP) 中无需任何身份验证的情况下进行访问吗?

tree - 学说 2 : Recursively select all self-referenced associated entities (NestedSet)

php - 关联指的是不存在的反面字段。 | Symfony2/Doctrine2

java - 检查ArrayList中是否存在可用元素

jquery :contains selector using variable

给定列表时,Java containsAll 不返回 true

php - Paypal cURL 请求 - ERRORCODE0=81002

php - 在 wordpress 中更改 CSS

javascript - 从 php 到 javascript 的接管变量

php - Doctrine :在使用两种自定义映射类型后,总是告诉我数据库不同步