Модифицируйте красноречивые отношения Laravel после получения моделей - PullRequest
0 голосов
/ 20 июня 2019

Коллекция моделей и их необходимые отношения (загруженные с нетерпением) были получены из БД. При дальнейшей обработке результатов становится необходимым обратить некоторые отношения. Для экономии ресурсов из БД не нужно загружать никаких дополнительных связей.

Исходный запрос выглядит следующим образом:

$resource = Model_A::with([
  'Model_B',
  'Model_C'
])->paginate(25);

Исходные результаты выглядят следующим образом:

Collection {
  #items: array:3 [
    0 => Model_A {
      ...
      #relations: array:2 [
        "Relation_Model_B" => Model_B { ... },
        "Relation_Model_C" => Model_C { ... }
      ...
    },
    1 => Model_A {
      ...
      #relations: array:2 [
        "Relation_Model_B" => Model_B { ... },
        "Relation_Model_C" => Model_C { ... }
      ...
    },
    2 => Model_A {
      ...
      #relations: array:2 [
        "Relation_Model_B" => Model_B { ... },
        "Relation_Model_C" => Model_C { ... }
      ...
    }
  ]
};

После преобразования результат должен выглядеть следующим образом:

Collection {
  #items: array:2 [
    0 => Model_B {
      ...
      #relations: array:1 [
        "Relation_Model_A" => array:3 [
           0 => Model_A { ... },
           1 => Model_A { ... },
           1 => Model_A { ... }
         ]
      ]
      ...
    },
    1 => Model_C {
      ...
      #relations: array:1 [
        "Relation_Model_A" => array:3 [
           0 => Model_A { ... },
           1 => Model_A { ... },
           1 => Model_A { ... }
         ]
      ]
      ...
    }
  ]
};

Я уже изучал классы Illuminate\Database\Eloquent\Builder и Illuminate\Database\Eloquent\Model, но мои знания PHP и Laravel еще недостаточно сильны, чтобы понять это самостоятельно.

Спасибо за вашу поддержку! Это высоко ценится!

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