php - 拉拉维尔 5.7。减去模型实例

标签 php laravel laravel-5 laravel-collection laravel-5.7

我有 2 个模型集合。

例如

$full = collect([
    [
        'name' => 'name1',  //id was omitted intentionally
    ],
    [
        'name' => 'name2', //id was omitted intentionally
    ],
    [
        'name' => 'name3', //id was omitted intentionally
    ],
]);

$diff = collect([
    [
        'id'   => 6,
        'name' => 'name1',
    ],
]);

我想在这样的事情之后收到这样的结果

$full->diff($full);

$result = [
    [
        'name' => 'name2',
    ],
    [
        'name' => 'name3',
    ],
];

如何在不使用 filter()reject()contains() 的情况下以更简洁的方式实现这一目标方式?

最佳答案

很难说为什么你不想将 filterrejectcontains 一起使用,但还有另一种解决方案:

$result = $full->pluck('name')->diff($diff->pluck('name'))->map(function($name) {
        return [
            'name' => $name
        ];
    });

dd($result->toArray());

结果你会得到:

array:2 [▼
  1 => array:1 [▼
    "name" => "name2"
  ]
  2 => array:1 [▼
    "name" => "name3"
  ]
]

关于php - 拉拉维尔 5.7。减去模型实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52348709/

相关文章:

php - Laravel Report Analytics - 缓慢的 foreach 查询循环

php - Laravel: Blade foreach 循环引导列

php - 我将如何在 Laravel Eloquent 中编写这个 MySQL 查询?

laravel - Laravel 的 toSql() 方法是否会屏蔽 id? (列值被问号替换)

php - 具有自定义枢轴模型的 Laravel 5.2 三向枢轴

php - Laravel - 尝试访问不在选择中的属性时抛出异常

php - 将表名插入另一个表的列中

PHP Ffmpeg 加入音频文件和视频

php - 使用 PHP 将 MySQL 数据导出到 CSV 文件显示 1 行和空白 CSV

laravel - 无法使用 Vagrant 在浏览器中查看 Laravel 项目