объединить данные двух красноречивых моделей в независимый массив - PullRequest
0 голосов
/ 21 сентября 2018

Я работаю с laravel, и у меня есть в основном эти 3 связанные модели следующим образом: модель человека (Person.php), модель задачи (Task.php) и модель поста (Post.php).

Person.php

public function tasks()
{
  return $this->hasMany(Task::class);
}

public function posts()
{
  return $this->hasMany(Post::class);
}

Task.php

public function person()
{
  return $this->belongsTo(Person::class);
}

Post.php

public function person()
{
  return $this->belongsTo(Person::class);
}

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

Person::with(['tasks','posts'])->findOrFail($id);

это возвращает отформатированные данные аналогичнок ним (это пример):

{
  "id": 1,
  "name": "jhon",
  "email": "jhon@gmail.com",
  "created_at": "2018-09-14 12:07:35",
  "updated_at": "2018-09-14 12:07:38",
  "tasks": [
    {
      "id": 1,
      "description": "task description",
      "person_id": 1,
      "created_at": "2018-09-18 21:07:48",
      "updated_at": "2018-09-19 20:47:37",
    },
    {
      "id": 2,
      "description": "task description",
      "person_id": 1,
      "created_at": "2018-09-19 00:15:45",
      "updated_at": "2018-09-20 15:28:58",
    }
  ],
  "posts": [
    {
      "id": 1,
      "title": "post title",
      "person_id": 1,
      "created_at": "2018-09-14 12:08:52",
      "updated_at": "2018-09-14 16:21:03"
    },
    {
      "id": 3,
      "title": "post title",
      "person_id": 1,
      "created_at": "2018-09-17 18:33:51",
      "updated_at": "2018-09-17 18:33:51"
    }
  ]
}

у меня такой вопрос: возможно ли разделить результат моделей задач и сообщений в другом массиве, если это возможно, как я должен делать?Я хочу получить такой результат:

[
    {
      "id": 1,
      "description": "task description",
      "person_id": 1,
      "created_at": "2018-09-18 21:07:48",
      "updated_at": "2018-09-19 20:47:37",
    },
    {
      "id": 2,
      "description": "task description",
      "person_id": 1,
      "created_at": "2018-09-19 00:15:45",
      "updated_at": "2018-09-20 15:28:58",
    },
    {
      "id": 1,
      "title": "post title",
      "person_id": 1,
      "created_at": "2018-09-14 12:08:52",
      "updated_at": "2018-09-14 16:21:03"
    },
    {
      "id": 3,
      "title": "post title",
      "person_id": 1,
      "created_at": "2018-09-17 18:33:51",
      "updated_at": "2018-09-17 18:33:51"
    }
 ]

1 Ответ

0 голосов
/ 21 сентября 2018
$a = DB:table('posts')->get();
$b = DB:table('tasks')->get();
$c = array_merge($a,$b);

см. Документ: https://laravel.com/docs/5.7/queries

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