dragon8837 2012-02-21 09:47
浏览 25
已采纳

如何将变量传递到记录集或集合的过滤器中

So I have a variable and a recordset:

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

I want to filter the recordset:

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

Unfortunately, the closure has no clue what $firstRecordID is.

How do I pass in the ID?

  • 写回答

2条回答 默认 最新

  • dqiz20794 2012-02-21 10:08
    关注

    You can bind the $firstRecordID to the closure:

    $firstRecordID = 1;
    $records = Recordset::all();
    
    $filterFunction = function ($record) use ($firstRecordID) {
        return ($record->id == $firstRecordID);
    };
    
    $filteredRecords = $records->find($filterFunction);
    

    I also simplified your lambda into a single line.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?