Как передать переменные в фильтр набора записей или коллекции - PullRequest
2 голосов
/ 21 февраля 2012

Итак, у меня есть переменная и набор записей:

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

Я хочу отфильтровать набор записей:

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

К сожалению, закрытие понятия не имеет, что такое $ firstRecordID.

Как мне пройти идентификационный номер?

Ответы [ 2 ]

4 голосов
/ 21 февраля 2012

Вы можете привязать $ firstRecordID к закрытию:

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

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

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

Я также упростил вашу лямбду в одну строку.

1 голос
/ 21 февраля 2012

Возможно, это глупый вопрос, но почему вы заставляете все фильтровать потом вручную, когда ODM может сделать это напрямую?

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

Даже если результат не намного меньше, чем при all() это выглядит намного чище, используя правильный инструмент для правильной цели.

...