2

所以我有一个变量和一个记录集:

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

我想过滤记录集:

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

不幸的是,闭包不知道 $firstRecordID 是什么。

我如何传递身份证?

4

2 回答 2

4

您可以将 $firstRecordID 绑定到闭包:

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

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

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

我还将您的 lambda 简化为一行。

于 2012-02-21T10:08:31.463 回答
1

这可能是一个愚蠢的问题,但是当 ODM 可以直接执行此操作时,为什么还要手动过滤所有内容?

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

即使结果不是小很多,all()使用正确的工具来实现正确的目的看起来更干净。

于 2012-02-21T16:21:35.333 回答