Слияние моделей и упорядочение по временным меткам создали - PullRequest
0 голосов
/ 01 мая 2018

Я делаю страницу активности, которая будет отображать активность пользователя, и мне интересно, как лучше подойти к этому вопросу, отображая различные действия и упорядочивая действия по меткам времени made_at всех объединенных таблиц.

на данный момент у меня есть

Контроллер

    public function getActivity()
      {
        $blogs = Blogs::where('blogs.user_id', '=', Auth::User()->id)->orderBy('created_at', 'DESC')
        $comments = Comments::where('comments.user_id', '=', Auth::User()->id)- >orderBy('created_at', 'DESC')
        $forumposts = Forumpost::where('forumposts.user_id', '=', Auth::User()->id)->orderBy('created_at', 'DESC')

        return view('myactivity')->withBlogs($blogs)->withComments($comments)->withForumposts($forumposts);

      }

Вид:

@foreach($blogs as $blog)
    <p>You posted {{$blog->blogname}} at {{$blog->created_at}}</p>

@endforeach 
@foreach($comments as $comment)
    <p>You posted {{$comment->comment}} at {{$comment->created_at}}</p>

@endforeach 
@foreach($forumposts as $forumpost)
    <p>You posted {{$forumpost->post}} at {{$forumpost->created_at}}</p>

@endforeach 

Проблема с приведенным выше кодом заключается в том, что он не объединен в один созданный_ат, это, по сути, три разных списка созданного_атериала, как мне объединить их в один?

1 Ответ

0 голосов
/ 01 мая 2018

Попробуйте это:

$activities = $blogs->toBase()
    ->merge($comments)
    ->merge($forumposts)
    ->sortByDesc('created_at');

->toBase() необходимо, потому что в противном случае модели с одинаковым id будут объединены.

Затем дифференцируйте их по вашему мнению:

@foreach($activities as $activity)
    @if($activity instanceof \App\Blogs)

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