2010-01-16 3 views
0

Je dois autoriser seulement les membres à écrire une critique sur un logement s'ils sont restés à l'hébergement et là member_id correspond à l'utilisateur Auth-> ('id').Cakephp vérifier pour voir si deux valeurs sont dans le tableau

Sur l'hébergement/le point de vue Je passe les données de BookingRequests.

qui ressemble à ce

BookingRequest 
    0 
    member_id => 4 
    accepted => 1 
    1 
    member_id => 5 
    accepted => 0 
    2 
    member_id => 4 
    accepted => 0 

Comment puis-je rechercher le tableau afin que je puisse permettre à des personnes seules qui ont séjourné à donner votre avis?

Répondre

0

Ce n'est pas aussi facile en PHP dans d'autres langues, vous devez donc injecter d'une manière différente.

Quelque chose comme ceci:

$vars = array(); 
foreach ($members as $request) { 
    if ($request->accepted) { 
    array_push($vars, $request); 
    } 
} 
0

Essayez ce,

function search($array, $key, $value) 
    { 
     $results = array(); 

     if (is_array($array)) 
     { 
      if ($array[$key] == $value) 
       $results[] = $array; 

      foreach ($array as $subarray) 
       $results = array_merge($results, search($subarray, $key, $value)); 
     } 

     return $results; 
    } 

    $array = array(
        "member_id" => 4, array("accepted" => 11), 
        "member_id" => 5, array("accepted" => 02), 
        "member_id" => 4, array("accepted" => 0) 
        ); 


    $stayedmember = search($array,$memberID,"accepted"); 

    print_r($stayedmember); 
0

En supposant « accepté » détermine si elles ont séjourné à l'hébergement ou non, et le tableau de test ci-dessous est en effet le format de votre tableau de données, alors vous pouvez utiliser le code suivant:

/* Test data */ 
$BookingRequestData = array(
    array('member_id' => 4, 'accepted' => 1), 
    array('member_id' => 5, 'accepted' => 0), 
    array('member_id' => 4, 'accepted' => 0) 
); 

$canAddReview = (count(Set::extract("/data[member_id=" . $this->Auth->user('id') . "][accepted=1]", array('data' => $BookingRequestData))) > 0); 
Questions connexes