2

だから私は変数とレコードセットを持っています:

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

レコードセットをフィルター処理したい:

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

残念ながら、クロージャには $firstRecordID が何であるかがわかりません。

ID を渡すにはどうすればよいですか?

4

2 に答える 2

4

$firstRecordID をクロージャーにバインドできます。

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

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

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

また、ラムダを 1 行に簡略化しました。

于 2012-02-21T10:08:31.463 に答える
1

ばかげた質問かもしれませんが、ODM が直接フィルタリングできるのに、後ですべてを手動でフィルタリングするのはなぜですか?

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

結果がそれほど小さくなくてもall()、適切な目的のために適切なツールを使用すると、はるかにきれいに見えます。

于 2012-02-21T16:21:35.333 に答える