PHP / Laravel проверяет, находятся ли заданные 2 значения в коллекции

#php #mysql #laravel #collections

#php #mysql #laravel #Коллекции

Вопрос:

База данных, которую я использую: Mysql

Я хочу перебрать строки таблицы и проверить, находятся ли два значения в этой строке внутри коллекции (laravel).

Моя настройка:

У меня есть массив, который выглядит следующим образом

 [
 ['foo_id' => 1, 'bar_id' => 31],
 ['foo_id' => 1, 'bar_id' => 55],
 ['foo_id' => 2, 'bar_id' => 32],
]
  

И таблица базы данных, которая выглядит следующим образом.

 table
 ---- ----- ------- 
| id | foo|   bar  |
 ---- ----- ------- 
| 1  |  1  |   31  |
 ---- ----- ------- 
| 2  |  1  |   55  |
 ---- ----- ------- 
| 3  |  2  |   32  |
 ---- ----- ------- 
| 4  |  3  |   87  |
 ---- ----- ------- 
| .  |  .  |   .   |
 ---- ----- ------- 

  

Итак, в этом примере строки 1,2 и 3 соответствуют моей коллекции, а строка 4 — нет.

Мой ожидаемый результат здесь должен заключаться в том, что когда я перебираю все строки в таблице, он вернет yes для первых 3, а затем вернет false для 4-го.

Заранее благодарю вас.

Комментарии:

1. что вы пробовали до сих пор?

Ответ №1:

Вы должны использовать фильтр для коллекции

 $return = $collection->filter(function($item) use ($array) {
    foreach ($array as $entry) {
        if ($entry['foo_id'] === $item->foo amp;amp; $entry['bar_id'] === $item->bar) {
            return true;
        }
    }
);