Сравнение коллекций Laravel - PullRequest
0 голосов
/ 02 июня 2018

У меня есть две коллекции: «Инструкции» и «Известные».В основном я беру новый набор «Инструкций» и проверяю, отличается ли что-то от того, что «Известно».

Итак, количество не велико.Я получаю информацию:

$Instructions = Instruction::all();
$Knowns = Known::all();

Теперь я ищу различия, и я попробовал каждый из этих трех методов:

$IssuesFound = $Instructions->diff($Knowns); 
$IssuesFound = $Instructions->diffKeys($Knowns); 
$IssuesFound = $Instructions->diffAssoc($Knowns); 

Дело в том, "«Инструкция» или «Известный» - это предмет с 17 атрибутами, и любой из этих атрибутов может отличаться.Я хочу сравнить атрибуты «Инструкции» с соответствующим атрибутом «Известных».(Оба элемента имеют одинаковые ключи, элементы бота имеют атрибут Reference, который действует как уникальный идентификатор.

Я обнаружил, что эти методы дают мне элемент, который отличается, но нескажите мне, какие отдельные атрибуты являются несоответствующими.

foreach ($IssuesFound as $issue)
    {
        dd($issue);
    }

Таким образом, метод, подобный $IssuesFound = $Instructions->diffKeys($Knowns);, даст элемент ххх другой, но я не вижу, как узнать, какой атрибут элемента этоЭто не так. Нет, если я не начну вложить циклы и перебирать все атрибуты - чего я пытаюсь избежать.

Как мне это сделать?

Заранее спасибо. (Laravel5,6)

1 Ответ

0 голосов
/ 02 июня 2018

Прямо из документов laravel, diffAssoc вернет то, что вы спрашиваете:

$collection = collect([
    'color' => 'orange',
    'type' => 'fruit',
    'remain' => 6
]);

$diff = $collection->diffAssoc([
    'color' => 'yellow',
    'type' => 'fruit',
    'remain' => 3,
    'used' => 6
]);

$diff->all();

// ['color' => 'orange', 'remain' => 6]

Вы получаете атрибут из коллекции FIRST, который отличается от коллекции SECOND, поэтому, если вы получаете 3 атрибута при вызове $diff->all() вы будете знать, КАКИЕ атрибуты различны, чтобы вы могли получить к ним доступ или делать все, что захотите, если вы опубликуете более конкретные результаты того, что вы получаете и что вы пытаетесь, мы можем помочь, но я думаю, что вы просто не думаетекак использовать эти методы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...