2016-12-11 10 views
0

ユニオンクエリ結果にページングしたい。 ページングされたユニオンクエリ結果の項目にアクセスできない

<div class="container"> 
    @foreach ($data as $user) 
     {{ $user->first_name }} 
    @endforeach 
</div> 

{{ $data->links() }} 

しかし、私はこのエラーを得た:今、私は私がこれを書いた searchブレードtemplate.Supposeで結果にアクセスしたい

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')); 

:私はこれを書いた

でき
Trying to get property of non-object (View: D:\wamp\www\aids\resources\views\main\pages\search.blade.php 

認識できない$userとそれはnameプロパティ

問題とは何ですか?

更新:
は、上記の女子学生からreturn $dataながらこれを返す:

{ 
    "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": "[email protected]", 
     }, 
     { 
      "id": 7, 
      "first_name": "hossein", 
      "last_name": "rezaei", 
      "created_at": "2012-04-16 22:11:46", 
      "email": "[email protected]", 
     }, 
    ] 
} 

は私が結果にアクセスするために $data->dataを試してみましたが、同じエラーがoccures。

アップデート2:

私は、私はこのような{{dd($user)}}を追加したときにことを発見:

<div class="container"> 
    @foreach ($data as $user) 
     {{dd($user)}} 
     {{ $user->first_name }} 
    @endforeach 
</div> 

arrayが結果の代わりにobjectを含んで返します。

+0

に変更されましたが、あなたは '$ user-> name'を表示しようとしていますか? – SteD

+0

私はそれを試みますが、同じ問題が発生します。 –

+0

'var_dump($ data)'を実行し、新しい深度レベルを追加していないかどうかを確認します。 –

答えて

0

@iCode指針によると、私はslice代わりarray_sliceメソッドを使用する必要があることがわかりました。実際にarray_sliceを使用したコードの一部が:

$slice = $workshops->slice($paginate * ($page - 1), $paginate); 
1

コントローラでは、クエリ結果に関数toArrayを呼び出し、コレクションをプレーンなPHP arrayに変換しています。コレクションの値がEloquentモデルの場合、モデルも配列に変換されます。

だからあなたは、ビューのforeachは、のようにする必要があります:

<div class="container"> 
    @foreach ($data['data'] as $user) 
     {{ $user['first_name'] }} 
    @endforeach 
</div> 
+0

私は 'toArray'を使用しました.beacause' array_slice'の最初のパラメータはArrayだけを与えます。そのために私はコレクションの雄弁を配列に変えなければなりません。 Eloquentモデルを配列に変換できない別の方法がありますか? –

+1

['slice'](https://laravel.com/docs/5.3/collections#method-slice)コレクションのメソッドは、指定されたインデックスから始まるコレクションのスライスを返します。 –

関連する問題