2016-08-01 4 views
0

У меня есть этот код здесь:Смешать два foreach. Уведомления. Laravel

$likes = Like::orderBy('created_at', 'desc')->paginate(10); 
    $comments = Comment::orderBy('created_at', 'desc')->paginate(10); 

HTML:

@foreach($likes as $like) 

@endforeach 

Как реализовать comments Еогеасп в likes Еогеасп поэтому выход не будет выглядеть так: На первый взгляд likes, а затем появляется comments , Я хочу, чтобы смешать его, чтобы он мог появиться что-то вроде этого:

Мне нравится Комментарий нравится Комментарий Комментарий Как

Это как уведомления собираются

Как это возможно?

ответ

0

Проще всего сделать бы merge коллекции, то order them по created_at, затем Foreach на новом colleciton:

PHP:

$likes = Like::orderBy('created_at', 'desc')->paginate(10); 
$comments = Comment::orderBy('created_at', 'desc')->paginate(10); 

$notifications = $likes->merge($comments)->sortByDesc('created_at'); 

HTML:

@foreach($notifications as $notification) 

@endforeach 
+0

А потом как мне получить доступ к '$ like-> user-> image' или' $ comment-> user-> name'? – feknuolis

+0

Я не тестировал его, но думаю, вы все равно сможете использовать его так, как сейчас. Объекты все равно должны присутствовать, чтобы вы могли называть их функциями. – Samsquanch

+0

Я получаю 'Undefined variable: like' – feknuolis

0

Возможно, вы не можете.

Вместо использования foreach для обоих вы можете использовать ключ для комментариев.

Что-то, как это будет делать, я думаю:

foreach($likes as $key => $like) { 
    print $like 
    print $comment[$key]; 
} 

В качестве примечания: У меня нет никакого опыта работы с Laravel.

Смежные вопросы