所以我有一个变量和一个记录集:
$firstRecordID = 1;
$records = Recordset::all();
我想过滤记录集:
$filteredRecords = $records->find(function($record){
if($record->id == $firstRecordID)
return true;
else
return false;
});
不幸的是,闭包不知道$ firstRecordID是什么。
如何传入ID?
答案 0 :(得分:4)
您可以将$ firstRecordID绑定到闭包:
$firstRecordID = 1;
$records = Recordset::all();
$filterFunction = function ($record) use ($firstRecordID) {
return ($record->id == $firstRecordID);
};
$filteredRecords = $records->find($filterFunction);
我还将你的lambda简化为一行。
答案 1 :(得分:1)
这可能是一个愚蠢的问题,但是为什么在ODM可以直接执行此操作后,您手动过滤所有内容?
$records = Recordset::all(array(
'conditions' => array(
'id' => array('<>' => $firstRecordID)
)
));
即使结果不比使用all()
小得多,使用正确的工具也可以看起来更清洁。