2012-02-21 24 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可以直接做到這一點時,手動進行過濾?

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

即使結果不小很多,這樣做all()它看起來使用權目的的正確工具乾淨多了。

+0

我同意,但這個例子是爲了簡單起見。我需要這個,因爲在編譯時不知道$ firstRecord的條件。實際上,每個行都嵌入了多個條件,由用戶決定,遵循特定的格式,並且當某個事件發生時,我的閉包將使用行中的信息來決定需要選擇哪些行。 – 2012-02-22 04:52:37

相關問題