Comment passer les variables dans un filtre sur un ensemble de disques ou une collection

StackOverflow https://stackoverflow.com/questions/9375305

  •  28-10-2019
  •  | 
  •  

Question

J'ai donc une variable et un ensemble de disques:

$firstRecordID = 1;
$records = Recordset::all();

Je veux filtrer le coffre-fort:

$filteredRecords = $records->find(function($record){
    if($record->id == $firstRecordID)
        return true;
    else
        return false;
});

Malheureusement, la fermeture n'a aucune idée de ce qu'est FiRSTRecordid.

Comment passer dans l'identification?

Était-ce utile?

La solution

Vous pouvez lier le $ firstrecordid à la fermeture:

$firstRecordID = 1;
$records = Recordset::all();

$filterFunction = function ($record) use ($firstRecordID) {
    return ($record->id == $firstRecordID);
};

$filteredRecords = $records->find($filterFunction);

J'ai également simplifié votre lambda en une seule ligne.

Autres conseils

C'est peut-être une question stupide, mais pourquoi faites-vous tout filtrer manuellement lorsque l'ODM peut le faire directement?

$records = Recordset::all(array(
    'conditions' => array(
        'id' => array('<>' => $firstRecordID)
    )
));

Même si le résultat n'est pas beaucoup plus petit que faire all() Il semble beaucoup plus propre en utilisant le bon outil dans le bon but.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top