Как объединить две коллекции с указанным условием c в laravel? - PullRequest
1 голос
/ 14 января 2020

У меня есть две коллекции competences и coCompetences эти коллекции выглядят следующим образом:

компетенция:

 ...
    {
      "id": 6,
      "category_id": 17,
      "user_id": 1,
      "objective_level": 4,
      "current_level": 4,
      "target_date": "2021-11-28",
      "obtained_date": "2022-10-14",
      "comment": "",
      "created_at": "2020-01-08 10:06:28",
      "updated_at": "2020-01-08 10:06:28",
      "name": null,
      "competenceName": "Hierarchy Building & BOM (Bill of Material)",
      "category": {
        "id": 17,
        "competence": "Hierarchy Building & BOM (Bill of Material)",
        "created_at": "2020-01-08 09:53:55",
        "updated_at": "2020-01-08 09:53:55",
        "wheel_id": 10
      }
    },
    {
...

Совместные компетенции:

{
    "category": {
      "id": 12,
      "competence": "Criticality Analysis",
      "created_at": "2020-01-08 09:53:55",
      "updated_at": "2020-01-08 09:53:55",
      "wheel_id": 10
    },
    "user_id": 1,
    "competenceName": "Criticality Analysis",
    "category_id": 12,
    "objective_level": 0,
    "current_level": 0,
    "target_date": "2020-01-14",
    "obtained_date": "2020-01-14",
    "comment": ""
  },

Мне бы хотелось в pu sh только coCompetences элементы в competences, где coCompetences.category_id не существует в competences.category_id

другим способом: добавьте все coCompetences элементы к competences за исключением тех, где coCompetences.category_id уже существует в coCompetences.

1 Ответ

0 голосов
/ 14 января 2020

Я не хочу писать код вместо вас, надеюсь, будет достаточно алгоритма. самый простой способ

  1. Взять идентификаторы массива из первого массива, например, с помощью pluck ()
  2. Отфильтровать второй и вернуть элементы, которые не существуют в первом
  3. pu sh отфильтрованные данные в первую очередь
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...