我正在尝试合并2个查询,并在对新变量进行分页后:
$a = Message::where('conversation_id',$id)->where('user_id',$user->id)->where('s_1',1)
->orderBy('created_at','DESC')->get();
$b = Message::where('conversation_id',$id)->where('user_id',$conversation->recipients()->last()->user->id)->where('s_2',1)
->orderBy('created_at','DESC')->get();
$result = $a->merge($b);
$messages = new Paginator($result, $result->count(), 1, 1);
在视图上工作foreach,但是渲染错误且不分页,只在一个页面中显示所有结果:
<table class="table table-hover">
@foreach($messages as $i => $message)
<tr>
<td>
<img src="{{$avatar[$message->user->username]}}" class="aoi pull-left" />
<a href="{{route('profile',[$message->user->username])}}">{{ $message->user->name }}</a>
{{ $message->body }}
</td>
</tr>
@endforeach
</table>
{!! str_replace('/?', '?', $messages->render()) !!}
消息变量返回正确的参数,但不工作在视图:
{"total":2,"per_page":2,"current_page":1,"last_page":1,"next_page_url":null,"prev_page_url":null,"from":1,"to":2,"data":
在url:/message/1?
我只能假设你这里的Paginator实际上是LengthAwarePaginator,因为你正在传递项目的总数(或者这可能是旧版本的Laravel)。
构造Paginator类的方法:
$messages = new LengthAwarePaginator($result, $result->count(), 1, 1);
如果你看Paginator类定义:
/**
* Create a new paginator instance.
*
* @param mixed $items
* @param int $total
* @param int $perPage
* @param int|null $currentPage
* @param array $options (path, query, fragment, pageName)
* @return void
*/
public function __construct($items, $total, $perPage, $currentPage = null, array $options = [])
第四个参数是当前页,您将其作为1传入,使其始终分页到第一页。您可以简单地传入null
(或者不避免传入第四个参数),它将尝试通过检查当前请求参数page
来自动解析当前页面。
总之,改成这样:
$messages = new LengthAwarePaginator($result, $result->count(), 1);