模型 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 .... 抱歉我的英文不好
答案 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())。这些方法是:
在你的例子中:
@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