коллекции и красноречивые результаты - PullRequest
1 голос
/ 21 апреля 2020

У меня есть набор строк, возвращаемых из функции и хранящихся в переменной с именем $ themes. Каждый топи c содержит набор статей. так что для переменной $ themes, если мы делаем $ themes [0] -> статьи, мы получаем несколько статей, а если мы делаем $ themes [1] -> статьи, мы получаем другой набор статей. То, что я хочу сделать, это поместить все эти статьи в одну переменную, давайте назовем это $ article, чтобы я мог выполнять такие операции, как $ article-> where ('author', 'Jone Doe') -> get ();

Я пытался сделать это:

$articles =  new collection();
foreach( $topics as $topic) {
  foreach( $topic->articles as $article)
      $articles->push($article);

Но это, к сожалению, разрушает фактическую структуру статей. как я не могу сделать $ статьи-> переводы, где я использую пакет перевода. но я могу сделать $ themes [0] -> статьи-> переводы. в основном я хочу получить все статьи в одной коллекции, как если бы они были возвращены от выполнения чего-то вроде

$articles = Article::all()->get();

Спасибо

1 Ответ

1 голос
/ 21 апреля 2020

Просто используйте метод pluck для вашей коллекции

$articles = $topics->pluck('articles');

И если вы будете sh 1-мерная коллекция статей

$articles = $topics->flatMap(function ($topic) {
    return $topic->articles;
});
...