无法访问分页联合查询结果的项目
can not access to items of a paginated union query results
我想对 Union 查询结果进行分页。我写了这个:
use Illuminate\Support\Facades\Input;
use Illuminate\Pagination\Paginator;
$page = Input::get('page', 1);
$paginate = 10;
$members = DB::table("members")
->select("id", "first_name", "last_name", "email", "created_at")
->where("site_id", $id);
$users = DB::table("users")
->select("id", "first_name", "last_name", "email", "created_at")
->where("site_id", $id)
->union($members)
->get()->toArray()
$slice = array_slice($users, $paginate * ($page - 1), $paginate);
$data = new Paginator($slice, $paginate);
return View::make('main.pages.search',compact('data','searchTerm'));
现在我想在 search
blade template.Suppose 中访问结果 我写了这个 :
<div class="container">
@foreach ($data as $user)
{{ $user->first_name }}
@endforeach
</div>
{{ $data->links() }}
但是我得到了这个错误:
Trying to get property of non-object (View: D:\wamp\www\aids\resources\views\main\pages\search.blade.php
无法识别 $user
是 name
属性
什么是问题?
更新:
而 return $data
从上面的男女生 return 这个 :
{
"per_page": 2,
"current_page": 1,
"next_page_url": null,
"prev_page_url": null,
"from": 1,
"to": 2,
"data": [
{
"id": 6,
"first_name": "ali",
"last_name": "hassani",
"created_at": "2012-04-16 22:11:46",
"email": "ali@gmail.com",
},
{
"id": 7,
"first_name": "hossein",
"last_name": "rezaei",
"created_at": "2012-04-16 22:11:46",
"email": "reza@gmail.com",
},
]
}
我尝试 $data->data
访问结果,但出现了同样的错误。
更新二:
我发现当我像这样添加 {{dd($user)}}
时:
<div class="container">
@foreach ($data as $user)
{{dd($user)}}
{{ $user->first_name }}
@endforeach
</div>
那 return 一个 array
包含结果而不是 object
。
在您的控制器中,您正在对查询结果调用函数 toArray
,将集合转换为普通 PHP array
。如果集合的值是 Eloquent 个模型,模型也将被转换为数组。
因此您的 foreach
视图应为:
<div class="container">
@foreach ($data['data'] as $user)
{{ $user['first_name'] }}
@endforeach
</div>
根据@iCode guidance I found that I should use slice而不是array_slice
方法。实际上,使用 array_slice
的那部分代码更改为:
$slice = $workshops->slice($paginate * ($page - 1), $paginate);
我想对 Union 查询结果进行分页。我写了这个:
use Illuminate\Support\Facades\Input;
use Illuminate\Pagination\Paginator;
$page = Input::get('page', 1);
$paginate = 10;
$members = DB::table("members")
->select("id", "first_name", "last_name", "email", "created_at")
->where("site_id", $id);
$users = DB::table("users")
->select("id", "first_name", "last_name", "email", "created_at")
->where("site_id", $id)
->union($members)
->get()->toArray()
$slice = array_slice($users, $paginate * ($page - 1), $paginate);
$data = new Paginator($slice, $paginate);
return View::make('main.pages.search',compact('data','searchTerm'));
现在我想在 search
blade template.Suppose 中访问结果 我写了这个 :
<div class="container">
@foreach ($data as $user)
{{ $user->first_name }}
@endforeach
</div>
{{ $data->links() }}
但是我得到了这个错误:
Trying to get property of non-object (View: D:\wamp\www\aids\resources\views\main\pages\search.blade.php
无法识别 $user
是 name
属性
什么是问题?
更新:
而 return $data
从上面的男女生 return 这个 :
{
"per_page": 2,
"current_page": 1,
"next_page_url": null,
"prev_page_url": null,
"from": 1,
"to": 2,
"data": [
{
"id": 6,
"first_name": "ali",
"last_name": "hassani",
"created_at": "2012-04-16 22:11:46",
"email": "ali@gmail.com",
},
{
"id": 7,
"first_name": "hossein",
"last_name": "rezaei",
"created_at": "2012-04-16 22:11:46",
"email": "reza@gmail.com",
},
]
}
我尝试 $data->data
访问结果,但出现了同样的错误。
更新二:
我发现当我像这样添加 {{dd($user)}}
时:
<div class="container">
@foreach ($data as $user)
{{dd($user)}}
{{ $user->first_name }}
@endforeach
</div>
那 return 一个 array
包含结果而不是 object
。
在您的控制器中,您正在对查询结果调用函数 toArray
,将集合转换为普通 PHP array
。如果集合的值是 Eloquent 个模型,模型也将被转换为数组。
因此您的 foreach
视图应为:
<div class="container">
@foreach ($data['data'] as $user)
{{ $user['first_name'] }}
@endforeach
</div>
根据@iCode guidance I found that I should use slice而不是array_slice
方法。实际上,使用 array_slice
的那部分代码更改为:
$slice = $workshops->slice($paginate * ($page - 1), $paginate);