Laravel сравнивает два результата запроса - PullRequest
0 голосов
/ 17 мая 2018

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

[
   {"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, похоже, ни один из них не работает.

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

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

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

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

0 голосов
/ 17 мая 2018

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

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...