从另一个集合中存在的集合中删除

时间:2017-07-09 22:00:01

标签: php laravel collections

假设我有2个集合,它们都有phone属性:

$contacts = Contact::all();
$optouts = Optout::all();

我想更新$contacts集合并删除所有已选择退出的集合。所以我想删除$contactsphone出现的所有$optouts

我该怎么做?

2 个答案:

答案 0 :(得分:2)

$contacts = Contact::all();
$optouts = Optout::all()->pluck('phone');

$filtered = $contacts->whereNotIn('phone', $optouts);

此处有更多信息:https://laravel.com/docs/5.4/collections

答案 1 :(得分:1)

一个选项是:

$phones = $optouts->pluck('phone')->toArray();

$newContacts = $contacts->reject(function ($contact) use ($phones) {
    return in_array($contact->phone, $phones);
});