laravel 5中的分页与where条件的关系

laravel 5中的分页与where条件的关系,laravel,pagination,relation,Laravel,Pagination,Relation,型号smsHeader protected $fillable = [ 'type', 'imei', 'login', 'ver' ]; public function detail() { return $this->hasMany('App\Model\smsDetail', 'id_header'); } 控制器 $smsheader = smsHeader::orderBy('id', 'desc')->where('login'

型号smsHeader

protected $fillable = [
    'type',
    'imei',
    'login',
    'ver'
];

public function detail()
{
    return $this->hasMany('App\Model\smsDetail', 'id_header');
}
控制器

$smsheader = smsHeader::orderBy('id', 'desc')->where('login', $user->email)->paginate(20);
    return view('app.inbox')->with('smsheader', $smsheader);
视图

  @foreach($smsheader as $header)
          @foreach($header->detail->where('type', '1') as $detail)
                                <tr>
                                    <td>{{$detail->number}}</td>
                                    <td>{{$detail->name}}</td>
                                    <td>{{$detail->text}}</td>
                                    <td>{{$detail->date}}</td>
                                </tr>
          @endforeach
   @endforeach
@foreach($smsheader作为$header)
@foreach($header->detail->where('type','1')作为$detail)
{{$detail->number}
{{$detail->name}
{{$detail->text}
{{$detail->date}
@endforeach
@endforeach
但是分页的结果是错误的,我如何在where smsdetail条件下设置分页。。。。??
对不起,我的英语不好

这行显示错误
$header->detail->where('type','1')
您可以在foreach中访问
$header->detail
,如果要使用where条件,则需要在末尾使用
get()
,如下所示

@foreach($smsheader as $header)
      @foreach($header->detail->where('type', '1')->get() as $detail)
                            <tr>
                                <td>{{$detail->number}}</td>
                                <td>{{$detail->name}}</td>
                                <td>{{$detail->text}}</td>
                                <td>{{$detail->date}}</td>
                            </tr>
      @endforeach
@endforeach
@foreach($smsheader作为$header)
@foreach($header->detail->where('type','1')->get()作为$detail)
{{$detail->number}
{{$detail->name}
{{$detail->text}
{{$detail->date}
@endforeach
@endforeach

此行显示错误
$header->detail->where('type','1')
您可以在foreach中访问
$header->detail
,如果要使用where条件,则需要在末尾使用
get()
,如下所示

@foreach($smsheader as $header)
      @foreach($header->detail->where('type', '1')->get() as $detail)
                            <tr>
                                <td>{{$detail->number}}</td>
                                <td>{{$detail->name}}</td>
                                <td>{{$detail->text}}</td>
                                <td>{{$detail->date}}</td>
                            </tr>
      @endforeach
@endforeach
@foreach($smsheader作为$header)
@foreach($header->detail->where('type','1')->get()作为$detail)
{{$detail->number}
{{$detail->name}
{{$detail->text}
{{$detail->date}
@endforeach
@endforeach

叶片视图中的Laravel查询不会自动执行。他们只需准备另一个QueryBuilder实例。您仍然需要运行其中一个“execute”方法(该方法将在下面运行PDOStatement::execute()。这些方法是:

  • first()(将结果集中的第一个结果作为单个对象返回)
  • get()(返回一个集合(带有一些附加功能的ArrayObject))
  • paginate($numberpage)(返回包含额外元信息的集合,以传递给通过$Collection->links()访问的$links属性)
在您的示例中:

@foreach($smsheader as $header)
      @foreach($header->detail->where('type', '1')->get() as $detail)
                            <tr>
                                <td>{{$detail->number}}</td>
                                <td>{{$detail->name}}</td>
                                <td>{{$detail->text}}</td>
                                <td>{{$detail->date}}</td>
                            </tr>
      @endforeach
@endforeach
@foreach($smsheader作为$header)
@foreach($header->detail->where('type','1')->get()作为$detail)
{{$detail->number}
{{$detail->name}
{{$detail->text}
{{$detail->date}
@endforeach
@endforeach

叶片视图中的Laravel查询不会自动执行。他们只需准备另一个QueryBuilder实例。您仍然需要运行其中一个“execute”方法(该方法将在下面运行PDOStatement::execute()。这些方法是:

  • first()(将结果集中的第一个结果作为单个对象返回)
  • get()(返回一个集合(带有一些附加功能的ArrayObject))
  • paginate($numberpage)(返回包含额外元信息的集合,以传递给通过$Collection->links()访问的$links属性)
在您的示例中:

@foreach($smsheader as $header)
      @foreach($header->detail->where('type', '1')->get() as $detail)
                            <tr>
                                <td>{{$detail->number}}</td>
                                <td>{{$detail->name}}</td>
                                <td>{{$detail->text}}</td>
                                <td>{{$detail->date}}</td>
                            </tr>
      @endforeach
@endforeach
@foreach($smsheader作为$header)
@foreach($header->detail->where('type','1')->get()作为$detail)
{{$detail->number}
{{$detail->name}
{{$detail->text}
{{$detail->date}
@endforeach
@endforeach

事实上,我已经试过了。。没有get();没关系。。。我的意思是关于分页的错误。。。分页显示了$smsheader而不是$detail,其中条件。。。例子。。。在smsheader::where('login',$user->email)中,他们有100个结果数据(5页)。。。但在视图中,我再次详细设置了位置()。。。其中详细显示了20个数据。。。在我看来它必须显示2页而不是5页。。。在此之前谢谢..@Megandi您的where条件不会对$smsheader产生影响。如果您需要,您必须在控制器上执行此操作。您可以告诉我如何执行此操作吗?您可以使用WHEREHADS。实际上,我已经尝试了。。没有get();没关系。。。我的意思是关于分页的错误。。。分页显示了$smsheader而不是$detail,其中条件。。。例子。。。在smsheader::where('login',$user->email)中,他们有100个结果数据(5页)。。。但在视图中,我再次详细设置了位置()。。。其中详细显示了20个数据。。。在我看来它必须显示2页而不是5页。。。在此之前谢谢..@Megandi您的where条件不会对$smsheader产生影响。如果您需要,您必须在控制器上执行此操作。您可以告诉我如何执行此操作吗?您可以使用WHEREHADS。实际上,我已经尝试了。。没有get();没关系。。。我的意思是关于分页的错误。。。分页显示了$smsheader而不是$detail,其中条件。。。例子。。。在smsheader::where('login',$user->email)中,他们有100个结果数据(5页)。。。但在视图中,我再次详细设置了位置()。。。其中详细显示了20个数据。。。在我看来它必须显示2页而不是5页。。。谢谢你。。对不起,我的英语不好。事实上,我已经试过了。。没有get();没关系。。。我的意思是关于分页的错误。。。分页显示了$smsheader而不是$detail,其中条件。。。例子。。。在smsheader::where('login',$user->email)中,他们有100个结果数据(5页)。。。但在视图中,我再次详细设置了位置()。。。其中的细节只显示了20D