laravel 5中的分页与实际情况有关

时间:2016-06-07 08:14:47

标签: 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', $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

但是分页的结果是错误的,我怎样才能在smsdetail条件下设置paginition .... 抱歉我的英文不好

2 个答案:

答案 0 :(得分:2)

此行显示错误$header->detail->where('type', '1') 您可以在foreach中访问$header->detail如果您想使用where 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

答案 1 :(得分:0)

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

  • first()(将结果集的第一个结果作为单个对象返回)
  • get()(返回一个Collection(带有一些额外功能的ArrayObject))
  • paginate($ numberPerPage)(返回带有额外元信息的Collection,传递给$ links属性,可通过$ collection-&gt; 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