2017-08-05 1 views
1

Je suis en train de vérifier si la liste de l'entité contient une entité, mais il me donne l'erreur suivante:Erreur: appel à une fonction de membre contient() sur la matrice Symfony 3

Error: Call to a member function contains() on array 

Ceci est mon code de fonction :

public function findAllEquivalents($reference) 
{ 
    $equivalents = $this->getEntityManager() 
     ->createQuery(
      'SELECT p FROM EKPlateformeBundle:Piece p where p.reference = 
      :ref') 
     ->setParameter('ref',$reference) 
     ->getResult(); 

    $listFinal = $equivalents ; 
    foreach ($equivalents as $piece) 
    { 
     $autreEquivalents = $piece->getEquivalents(); 
     foreach ($autreEquivalents as $p) 
     { 
      if (!$listFinal->contains($p)) // error here 
      { 
       $listFinal->add($p); 
      } 
     } 
    }  
    return $listFinal ; 
} 

J'utilise Symfony 3.3.2 et Doctrine2. Merci.

+0

tableaux PHP ne sont pas des objets. http://php.net/manual/ru/function.in-array.php –

+0

Merci. cela fonctionne, j'ai changé contient avec in_array et ajouter avec array_push – Sabra

Répondre

0

Modifié: code correct

public function findAllEquivalents($reference) 
{ 
    $equivalents = $this->getEntityManager() 
     ->createQuery(
      'SELECT p FROM EKPlateformeBundle:Piece p where p.reference = :ref') 
     ->setParameter('ref',$reference) 
     ->getResult(); 

    $listFinal = $equivalents ; 
    //array_push($listFinal, $listFinal); 

    foreach ($equivalents as $piece) 
    { 
     $autreEquivalents = $piece->getEquivalents(); 
     foreach ($autreEquivalents as $p) 
     { 
      if (!in_array($p, $listFinal)) 
      //if (!$listFinal->contains($p)) 
      { 
       array_push($listFinal, $p);   
      } 
     } 
    }  
    return $listFinal ; 
}