2012-02-21 4 views
2

にフィルタに変数を渡す:どうだから私は変数とレコードセットを持っているレコードセットまたはコレクション

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

私はレコードをフィルタリングする:残念ながら

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

、閉鎖が持っています$ firstRecordIDは何ですか?

IDはどのように渡しますか?

答えて

4

あなたは閉鎖に$ firstRecordIDをバインドすることができます。私はまた、単一のラインにあなたのラムダを簡素化

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

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

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

1

これはおそらく愚かな質問ですが、ODMで直接行うことができる場合は、後で手動でフィルタリングするためにすべてを取得するのはなぜですか?結果はall()を行うことは、それは右の目的のための適切なツールを使用して非常にきれいに見えることをあまり小さくない場合でも

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

+0

私は同意しますが、例は簡潔にするためです。これは$ firstRecordの条件がコンパイル時にわからないために必要です。実際には複数の条件が各行に埋め込まれ、特定の形式に従ってユーザーによって決定されます。特定のイベントが発生すると、クロージャはその行の情報を使用して選択する必要がある行を決定します。 –

関連する問題