akanehara / ginq

`LINQ to Object` inspired DSL for PHP
MIT License
193 stars 18 forks source link

distinctBy があると便利かもしれない #56

Open sukobuto opened 10 years ago

sukobuto commented 10 years ago

「何を以って重複とするか」を指定できると便利だな、という場面がありました。 例えば「ある親IDに属するメンバーからひとつのみ選択」という条件を適用する場合

$picked_parent_ids = [];
Ginq::from($members)
    ->where(function(Members $m) use (&$picked_parent_ids) {
        if (!in_array($m->parent_id, $picked_parent_ids)) {
            $picked_parent_ids[] = $m->parent_id;
            return true;
        } else {
            return false;
        }
    })

のようにフィルタリングする必要がありますが、これを以下のように表現できるとスッキリします。

Ginq::from($members)
    ->distinctBy('parent_id');
akanehara commented 10 years ago

:+1: