Comment passer les variables dans un filtre sur un ensemble de disques ou une collection
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?
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