2016-06-07 10 views
0

모델 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 조건에서 페이지 매김을 설정할 수 있습니까? ?? 내 나쁜 영어

답변

2

오류에 대한 유감은 조건이 다음과 같은 말에 get()를 사용하여 필요로하는 곳에 사용하려는 경우 foreach는 내 $header->detail에 액세스 할 수 있습니다 $header->detail->where('type', '1') 이 줄을 보여주는 아래

@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 
+0

실제로, 나는 시도했다. .. get(); 괜찮아요 ... 오류는 페이지 매김에 대한 것입니다 ... $ 세부 사항에 $ smsheader에 대한 세부 정보 표시가 없습니다 ... 예제 ... in smsheader :: where ('login', $ 사용자 -> 전자 메일) 그들은 100 결과 데이터 (5 페이지 매김) ...하지만 볼 수있는 내가 자세히 (어디서 자세히 ...) 설정 ... 자세히 어디 그냥 20 데이터를 표시 ... 그것은 내보기에 2 매김 표시해야합니다 아니 5 ... 전에 감사합니다. – Megandi

+0

@ 메간디 어디 $ smsheader.If에 영향을 미치지 않습니다 당신이 컨트롤러 에서이 일을해야합니다. –

+0

그걸 어떻게 할 수 있는지 말해 주시겠습니까 ?? – Megandi

0

블레이드보기 내의 Laravel 쿼리가 자동으로 실행되지 않습니다. 그들은 단순히 다른 QueryBuilder 인스턴스를 준비합니다. "execute"메소드 중 하나를 실행해야합니다 (즉, PDOStatement :: execute()가 실행됩니다). 이 방법은 다음과 같습니다

  • 첫 번째()
  • PAGINATE (컬렉션 일부 추가 추가 기능과 함께 (ArrayObject)를 반환)
  • 의 get() (단일 개체로 설정 결과에서 첫 번째 결과를 반환) ($ numberPerPage) (달러 (A $)에 전달하기 위해 별도의 메타 정보가있는 컬렉션을 반환 $ 모음 -을 통해 접근 가능한 속성을 링크> 링크()) 귀하의 예제에서

:

@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 
+0

사실, 이미 시도했는데 .. get(); 괜찮아요 ... 내가 말한 오류는 페이지 매김에 관한 것입니다 ... 페이지 매김은 $ smsheader에 대한 것이 아니라 $ detail에 있습니다 ... 예제 ... smsheader :: where ('login', $ user-> email) 그들은 100 개의 결과 데이터 (5 개의 페이지 매김)를 가지고 있지만 ... 자세히 볼 때 어디에서 자세히 (?)를 설정하고 어디에서 상세하게 20 개의 데이터를 표시 할 것인가? 그것은 5가 아닌 제 5의 페이지 매김을 보여줘야합니다 ... 전에 고마워. 그리고 나쁜 영어로 미안해. – Megandi