Laravel сравнивает два результата запроса

Я хочу получить разницу между этими двумя запросами, но, похоже, это не работает.

[
{"subjectcodeco":"BIO 111","subjectunitco":1,"subjectvalueco":"C"},
{"subjectcodeco":"BIO 112","subjectunitco":1,"subjectvalueco":"C"},
{"subjectcodeco":"BIO 113","subjectunitco":2,"subjectvalueco":"C"},
{"subjectcodeco":"BIO 114","subjectunitco":1,"subjectvalueco":"C"},
{"subjectcodeco":"BIO 115","subjectunitco":2,"subjectvalueco":"C"},
{"subjectcodeco":"CHE 111","subjectunitco":2,"subjectvalueco":"C"},
{"subjectcodeco":"CHE 112","subjectunitco":1,"subjectvalueco":"C"},
{"subjectcodeco":"CHE 113","subjectunitco":1,"subjectvalueco":"C"},
{"subjectcodeco":"CHE 114","subjectunitco":1,"subjectvalueco":"C"},
{"subjectcodeco":"EDU 112","subjectunitco":2,"subjectvalueco":"C"},
{"subjectcodeco":"EDU 113","subjectunitco":2,"subjectvalueco":"C"},
{"subjectcodeco":"GSE 111","subjectunitco":1,"subjectvalueco":"C"},
{"subjectcodeco":"GSE 112","subjectunitco":1,"subjectvalueco":"C"},
{"subjectcodeco":"GSE 113","subjectunitco":1,"subjectvalueco":"C"},
{"subjectcodeco":"EDU 111","subjectunitco":1,"subjectvalueco":"C"}
]

и это

[
{"matricno":"15\/1011","subjectcodeco":"BIO 111","subjectunitco":1,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"BIO 112","subjectunitco":1,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"BIO 113","subjectunitco":2,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"BIO 114","subjectunitco":1,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"BIO 115","subjectunitco":2,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"CHE 111","subjectunitco":2,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"CHE 112","subjectunitco":1,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"CHE 113","subjectunitco":1,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"CHE 114","subjectunitco":1,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"EDU 111","subjectunitco":1,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"EDU 112","subjectunitco":2,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"EDU 113","subjectunitco":2,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"GSE 111","subjectunitco":1,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"GSE 112","subjectunitco":1,"subjectvalueco":"C"},
{"matricno":"15\/1011","subjectcodeco":"GSE 113","subjectunitco":1,"subjectvalueco":"C"}
]

Я пытался использовать коллекцию laravel diffAssoc и diffKeys, но ни один из них не работает.

0

Решение

Вы можете просто зациклить свой первый набор, а затем сравнить элементы со вторым:

$set1 = collect([...]); // Contents omitted for brevity
$set2 = collect([...]); // Contents omitted for brevity

$diff = [];

$set1->each(function($item, $key) {
$exists = $set2->where(...)->first(); // Where clause omitted for brevity
if($exists) {
array_push($diff, $item);
}
});

dd($diff); // Will contain the items of $set1 that don't exist in $set2
0

Другие решения

Если мое предположение в вашем вопросе верно, то вы можете сделать это.

foreach($query as $queries)
{
foreach($secondQuery as $secondQueries)
{
if($queries['subjectcodeco'] == $secondQueries['subjectcodeco'])
{
//Condition Here
}
//And continue with the conditions
}
}

Каждая итерация каждого значения массива также будет повторять все значения внутри второго массива, следовательно, проверяя все отдельные значения каждого массива.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector